A cikk elején már írtam az EXE-filekről, de szerintem egy kicsit keveset. (MZ vagy ZM az első két byte)
Egy EXE file felépítése:

  ex_magic      dw ?    ; .exe signature [MZ vagy ZM]   ex_Lpage      dw ?    ; .exe file hossza mod 512 bytes < 512 bytes   ex_Fpages     dw ?    ; .exe file hossza div 512 bytes                           ha Lpage>0,akkor hozzáadunk még egyet   ex_relocitems dw ?    ; "relocation table item"-ek száma   ex_hdrpara    dw ?    ; .exe fejléc mérete paragrafusokban   ex_minalloc   dw ?    ; minimális memória   ex_maxalloc   dw ?    ; maximális memória   ex_oss        dw ?    ; SS [verem szegmens]   ex_osp        dw ?    ; SP [verem offset]   ex_chk_sum    dw ?    ; checksum   ex_oip        dw ?    ; IP [innen kezdődik a program]   ex_ocs        dw ?    ; CS [ez a szegmense]   ex_ofstbl     dw ?    ; az első relokációs tábla offset-e   ex_ovrnum     dw ?    ; overlay-ek száma
Ha például egy exe tömörítőt szeretnénk 'felhasználni', akkor az alábbit kell csinálni:

Megkeressük a betömörítendő filet. Csinálunk egy mesterséges EXE fejlécet, ami egy olyan exe lesz, amiben nincs semmilyen utasítás, még kilépés sem!

Miután lefordítottuk a forrást, egy 512 byteos forrást kapunk. A forráshoz hozzámásoljuk a betömörítendő filet a 'copy /b ...' paranccsal. Csinálunk egy másik exe-t, betömörítjük, s egy debuggerrel kiszedjük a kitömörítő rutint. Hogy elég nagy legyen az az exe, amiből majd kiszedjük a kitömörítő rutint, rakjunk bele egy kis tömböt : times 256 db 0 [Csakazértis tömb :)]

Majd fordítsuk le a forrást[Ez a második, NEM ehhez kell másolni a kitömörítendő cuccost], tömörítsük be, majd indítsuk el a debuggert. A legtöbb exe tömörítő úgy kezdődik, hogy a tömörítő feljebb másolja magát a memóriába. A másolás után egy RETF fog következni. Na innentől kell nagyon figyelni ! [Ha mégsem így kezdődne, akkor szivás:)] Innentől kezdve általában már a kitömörítő rutin jön. Mentsük ki a code-ot, és rulez, mert van már egy kitömörítő rutinunk :) [egy jmp far.. lesz a rutin vége] Tehát már megvan a kitömörítő rutinunk, ugorjunk vissza tehát a az összemásolt EXE-hez. Źllítsuk be a file fejlécében a 3-4-5-6 bájtokat, tehát az ex_Lpage-t és az ex_Fpages-t. Ezután már működni fog a file letömörítése. Vágjuk le a HEADER-t és a kitömörítő rutint, és már kész is van a betömörített adatfileunk Most már csak fel kell használni, de ez a kitömörítő rutin ismeretében már nem eshet nehezünkre. Ha egy rövid forráskódot szeretnél látni, akkor lesd meg az 'lzexam.zip'-et.