Such dir ein PE-Tutorial aus (es gibt einige - von MS selbst, von Iczelion usw) und schau an, was da alles reingehört.
Dann kannst du (am besten bei MS) nach "PE-Loader" suchen - das ist nämlich das Teil, welches in Windows die Programme in den Speicher lädt, initialisiert usw.
Denn mit dem Cryptor wirst du ja den Code "verschlüsseln" - deswegen musst du wissen, wo dieser Bereich anfängt, wie groß dieser ist und wo man die Werte auslesen kann (PE-Format) und wie du die wiederherstellen kannst (damit die Exe nachher auch läuft) bzw was bei der Wiederherstellung zu beachten ist.

Auch muss ein Cryptor den Code wieder entschlüsseln - deshalb wirst du eine Stub (Codeteil, der die Exe entschlüsselt) schreiben müssen. Die Stub musst du zu der Exe hinzufügen - also wiederum PE-Format Verweis (Sections und deren Flags - denn die codesection wirst du beschreibbar machen müssen, damit der Crypter wieder alles entpacken kann). Natürlich musst du nach dem Bearbeiten der Exe die PE-Werte korriegieren - für alle geänderten Bereiche -> wiederum PE-Format Kenntnisse.

Da die Stub zu den Exen hinzugefügt werden soll, sollte dieser Code möglichst unabhängig von irgendwelchen Bibliotheken sein Wink. Idealerweise wäre es auch ein adressunabhängiger Code - den kann man mit vielen Verrenkungen in C produzieren, aber wohl nicht in Delphi.

Damit es nicht zu einfach wird, muss man dann verschiedene Sachen wie TLS Einträge (Tls Tables) berücksichtigen, von denen z.B Borland einen ausgiebigen Gebrauch macht. Denn ein TLS-Callback sorgt dafür, dass Code schon vor dem Programmstart ausgeführt werden kann (z.B zu initialisierungszwecken, zugegebenermaßen ist es für DLLs noch nützlich, für Exen eigentlich nicht). Da es aber vor der Ausführung der Stub passiert, liegt der Code noch verschlüsselt da, klappt es nicht. Hier muss man irgendwie dafür sorgen, dass dieser Codebereich entweder nicht verschlüsselt oder vor dem Gebrauch entschlüsselt wird.

Wenn du auch noch die Imports/Exports crypten willst, kommst du nicht um entsprechende Tutorials herum ("understandig Imports" von dzzie oder ein Teil der Tutorials von Iczelion). Auch hat man mit den ganzen Eigenarten der Linker viel Spass - Borland und MS Linker produzieren unterschiedliche Executables.

Das PE-Format an sich ist recht umfangreich (zumindest wenn man alles berücksichtigen möchte) und wie erwähnt, manche Linker nutzen das eine oder andere - um einen halbwegs stabilen und brauchbaren Cryptor zu schreiben muss man imho schon einiges an Erfahrung mitbringen.
Wenn es allerdings nur ein bestimmter Zielbreich ist (nur VB Compiler/ nur MS-Compiler etc) wird es schon um vieles einfacher. Oder man kann auch "Pseudocryptoren" schreiben - das ist aber eher ein Binder mit Cryptfunktion.


Wobei: imho bringt Delphi-Quellcode (oder überhaupt irgendwelche Quellcodes) bei der Erlernung erstmal nicht viel - man muss das Format schon im groben verstanden haben, um aus dem Quellcode lernen zu können.

PS: die Auflistung ist auch keineswegs vollständig - ich wette, mir sind noch ziemlich viele wichtige Sachen nicht eingefallen
Quelle:

http://www.buha.info/board/showthread.php?p=389510
Ist zwar für Delphi geschrieben, trifft aber alles auch auf C/C++ zu.