Wie kann ich die Header aus einer winNT -tragbaren ausführbaren Datei mit Perl lesen?

StackOverflow https://stackoverflow.com/questions/1418855

  •  07-07-2019
  •  | 
  •  

Frage

Ich möchte mit PE -Dateien in Perl arbeiten und fand kein Modul, also denke ich, dass ich meine eigene schreiben werde (das hat das bereits einmal in Delphi gemacht).

Ich habe nur ein Problem bekommen, wenn ich die ausführbare Datei auf einen Puffer zuordnen kann, wie kann ich nach Oktalen wie 0x00004550 (Image_NT_NIGNATION) suchen, sie in schriftliche Zeichenfolgen zurückkehren usw.?

War es hilfreich?

Lösung

Dort ist Ein Perl -Modul zur Manipulation tragbarer Ausführbarungen: Win32::Exe.

Ich habe keine Ahnung auf Ihre genaue Frage, aber wenn Sie noch Ihre eigene Bibliothek schreiben möchten, Win32::Exe Könnte eine gute Referenz sein.

Andere Tipps

Verwenden Sie zur Konvertierung dieses Wertes in eine Bytestring -Darstellung pack. The constant you are dealing is a little-endian 32 bit value, so 'V' in the template.

$ perl -e 'print pack q[V], 0x00004550' | hd
00000000  50 45 00 00                                       |PE..|
00000004

Sehen perldoc -f pack für Details.

Sie müssen wahrscheinlich nicht nach Zeichenfolgen wie "pe 0 0" suchen. Verwenden Sie sie einfach, um zu überprüfen, ob die Datei, die Sie tatsächlich lesen, tatsächlich eine PE -Datei ist. Der Abschnitt "PE" erfolgt normalerweise direkt nach dem Abschnitt DOS ('MZ'), der ein eigenes Feld für eigene Länge hat.

(I stimme zu Win32::Exe kann einen Blick wert sein, je nachdem, was Sie tun möchten.)

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