Frage

Ich habe in EXE-Header einen seltsamen Wert gelegt gesehen

00000000 :4D 5A 90 00 03 00 00 00 - 04 00 00 00 FF FF 00 00
00000010 :B8 00 00 00 00 00 00 00 - 40 00 00 00 00 00 00 00
00000020 :00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00000030 :00 00 00 00 00 00 00 00 - 00 00 00 00 A8 00 00 00
00000030 :00 00 00 00 00 00 00 00 - 00 00 00 00 A8 00 00 00 <-

Ich weiß nicht, was A8 es tun, aber wenn ich es mit Nullen ersetzen mein Programm nicht ausgeführt.

In einem Wort: was das ist

?

Auch könnten Sie mir auch Link zum vollständigen MS DOS-Header?

War es hilfreich?

Lösung

DWORD bei Offset 0x3C wird der Offset des neuen EXE-Header, auch bekannt als IMAGE_NT_HEADERS. Also, wenn Sie den Wert dort zu ändern, die PE-Loader die neuen EXE-Header nicht finden können.

Andere Tipps

Der erste Teil eines PE ist die MSDOS Stub; bei 0x3C (wo Ihre „A8“ ist) gibt es an der PE-Dateisignatur der Offset. Wenn Sie es Null, nicht der Lader der Lage sein, die PE-Signatur zu finden, und wird sich weigern, es zu laden (oder es nur als eine ausführbare MS-DOS zu laden, ich habe nicht versucht). Weitere Informationen finden Sie im PE Formatspezifikationen .

Ich vermute, dass es die auf den neuen PE-Header versetzt ist, das erste 30 ungeradee Bytes sind die MS-DOS-Header, die in die Datei versetzt, wo ‚A8‘ besteht in entsprechen das Feld in der Struktur _IMAGE_DOS_HEADER genannt LONG e_lfanew; // File address of new exe header; Es ist dieser Wert ‚A8‘ würde einen Teil des neuen IMAGE_NT_HEADER sein, die diese Informationen enthält

  • DWORD Unterschrift;
  • _IMAGE_FILE_HEADER FileHeader;
  • _IMAGE_OPTIONAL_HEADER Optional;

Die ersten zwei Bytes sind die ursprünglichen MS-DOS-Header in die ausführbare Datei, wie durch diese Konstante gezeigt: WORD IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ; Die IMAGE_NT_HEADER hat diese Signatur zu identifizieren, dass es sich um eine ausführbare Datei für NT-Plattformen DWORD IMAGE_NT_SIGNATURE = 0x00004550; // PE00;

Sie werden alle diese Informationen in einer Header-Datei namens pe.h finden.

Was ist passiert es Ihnen, den Wert ‚A8‘ weggewischt, könnte der Lader nicht die IMAGE_NT_HEADER finden und damit gescheitert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top