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 № 1Tam 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ć.)