Fragen zum Aufbau einer .exe (DOS_HEADER)

Hallo zusammen,

Ich beschäftige mich momentan mit dem Aufbau einer .exe Datei
mit dem Ziel deren Funktionsweiße/Aufbau zu verstehen.
Zu diesem Thema bin ich gekommen da ich viel über ExePacker und
Crypter gelesen habe und ich diese Programme verstehen möchte.

Eine Exedatei beginnt ja mit dem DOS_Header.
leider habe ich bis jetzt nur diese Definiton des DOS_Headers
gefunden:

typedef struct _IMAGE_DOS_HEADER
{
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew;
} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;

e_magic enthält dabei die Zeichenkette 'MZ' und das
Elememt e_lfanew enthält den Anfang des IMAGE_NT_HEADERS.
Aber was hat es mit den anderen Elementen auf sich?
Kann mir das jemand Erklären oder hat einen weiterführenden Link?
Ich konnte bis jetzt leider keine Erklärung dazu finden.

Grüße 0xPharao
 
Zuletzt bearbeitet:
Dankeschön, auf dieses Dokument bin ich noch nicht gestosen.
Die Suche der msdn hatte mich immer direkt zum IMAGE_NT_HEADERS
geführt.

Wäre es denn möglich eigenen Code im Dos-stub abzulegen und
diesen ausführen zu lassen anstatt ihn an die Exe anzuhängen?
Dieser Bereich der Exe wird ja quasi übersprungen ( This program
cannot be run in DOS mode ) oder wird dieser Bereich überhaupt
nicht mit geladen?
 
Da steht kaum etwas dazu ;)

https://tuts4you.com/download.php?view.235
attachment.php
Edit:
Wäre es denn möglich eigenen Code im Dos-stub abzulegen und
diesen ausführen zu lassen anstatt ihn an die Exe anzuhängen?
Jep, zwischen Word an 0x00 und DWORD an 0x3C lässt sich eigener Code ablegen - wie z.B von MEW11, FSG2 (<- bin mir allerdings unsicher und keine Lust zum Nachprüfen ;) ) oder hier http://www.phreedom.org/research/tinype/ gemacht wird.
 
Zuletzt bearbeitet:
Auch dir ein Dankeschön,

werde mir jetzt die Quellen durchlesen und
weiter mit meiner Exe experimentieren und
versuchen alles mögliche daraus auszulesen.


Edit:

ich kann also den gesammten DOS-Header überschreiben?
(abgesehen von 'MZ' und dem DWORD e_lfanew)
hört sich interresant an, ich hätte eher erwartet den Sub ersetzen
zu können.
Werde mir Tinype demnächst durchlesen und weiter suchen.

Dank 0xPharao
 
Zuletzt bearbeitet:
Zurück
Oben