/ / Jak mogę odczytać nagłówki z przenośnego pliku wykonywalnego WinNT za pomocą Perla? - perl, przenośny plik wykonywalny

Jak mogę odczytać nagłówki z przenośnego pliku wykonywalnego WinNT za pomocą Perla? - perl, przenośny plik wykonywalny

Chcę pracować z plikami PE w Perlu i nie znalazłem modułu, więc myślę, że napiszę własny (już raz w Delphi).

Mam tylko jeden problem podczas mapowania pliku wykonywalnego do bufora, jak mogę wyszukać ósemki, takie jak 0x00004550 (IMAGE_NT_SIGNATURE), przekonwertować je z powrotem na ciągi do zapisu itp.?

Odpowiedzi:

9 dla odpowiedzi № 1

Tam jest moduł Perla do manipulowania przenośnymi plikami wykonywanymi: Win32::Exe.

Nie mam pojęcia o twoim dokładnym pytaniu, ale jeśli nadal chcesz napisać własną bibliotekę, Win32::Exe może być dobrym referencją.


2 dla odpowiedzi nr 2

Aby przekonwertować tę wartość na reprezentację bytestring, użyj pack. Stała, którą masz do czynienia, jest 32-bitową wartością małego endianu, więc "V" w szablonie.

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

Widzieć perldoc -f pack dla szczegółów.

Prawdopodobnie nie będziesz musiał wyszukiwać ciągówjak "PE

(Zgadzam się z tym Win32::Exe może być warta obejrzenia, w zależności od tego, co chcesz zrobić.)