Искам да работя с PE файлове в Perl и не намерих модул, така че мисля, че ще напиша собствения си (вече го направих в Delphi веднъж).
Имам само един проблем, когато картографирам изпълнимия файл в буфер, как мога да търся осмици като 0x00004550 (IMAGE_NT_SIGNATURE), да ги конвертирам обратно в записими низове и т.н.?
Отговори:
9 за отговор № 1Там е модул Perl за манипулиране на преносими изпълними файлове: Win32::Exe
.
Нямам представа за точния ви въпрос, но ако все още искате да напишете собствена библиотека, Win32::Exe
може да бъде добра референция.
2 за отговор № 2
За превръщането на тази стойност в примерно представяне, използвайте pack
, Константата, с която се занимавате, е малка едианска 32-битова стойност, така че "V" в шаблона.
$ perl -e "print pack q[V], 0x00004550" | hd
00000000 50 45 00 00 |PE..|
00000004
виждам perldoc -f pack
за детайли.
Вероятно няма да се наложи да потърсите низовекато "PE
(Съгласен съм Win32::Exe
може да си заслужава да изглежда, в зависимост от това, което искате да направите.)