我想在Perl與PE文件的工作,並沒有找到一個模塊,所以我想我會寫我自己的(已經做了,在德爾福一次)。我怎樣可以讀取使用Perl一個WINNT移植可執行文件的標題?
我只有一個問題,映射可執行文件緩衝區時,我怎麼能尋找像0x00004550(IMAGE_NT_SIGNATURE)八進制,將其轉換回寫串等?
我想在Perl與PE文件的工作,並沒有找到一個模塊,所以我想我會寫我自己的(已經做了,在德爾福一次)。我怎樣可以讀取使用Perl一個WINNT移植可執行文件的標題?
我只有一個問題,映射可執行文件緩衝區時,我怎麼能尋找像0x00004550(IMAGE_NT_SIGNATURE)八進制,將其轉換回寫串等?
There is一個用於處理可移植可執行文件的Perl模塊:Win32::Exe
。
我對你確切的問題沒有線索,但是如果你仍然想寫自己的庫,Win32::Exe
可能是一個很好的參考。
對於值轉換爲字節串表示,使用pack
。你正在處理的常量是一個小端的32位值,所以模板中的'V'。
$ perl -e 'print pack q[V], 0x00004550' | hd
00000000 50 45 00 00 |PE..|
00000004
查看perldoc -f pack
瞭解詳情。
你可能不會需要搜索字符串,如「PE \ 0 \ 0」,只是用它們來驗證你實際上是讀文件是否是一個PE文件。在「PE」部分有其自身的長度字段中的DOS(「MZ」)部分之後通常是。
(我同意,Win32::Exe
可能是值得一看,這取決於你想要做什麼。)
謝謝,我使用Win32 ::埃克現在'objdump' :) – maxedmelon 2009-09-20 10:58:47