我怎样才能读取使用Perl从WINNT移植可执行文件的标题?(How can I read the

2019-08-05 19:45发布

我想在Perl与PE文件的工作,并没有找到一个模块,所以我想我会写我自己的(已经做了,在德尔福一次)。

我只有一个问题,映射可执行文件的缓冲区,我如何可以搜索像0x00004550(IMAGE_NT_SIGNATURE)八进制时,将其转换回写串等?

Answer 1:

一个Perl模块来操控便携式可执行文件: Win32::Exe

我没有对你的问题相关的线索,但如果你仍然想编写自己的库, Win32::Exe可能是一个很好的参考。



Answer 2:

对于值转换为字节串表示,使用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可能是值得一看,这取决于你想要做什么。)



文章来源: How can I read the headers from a WinNT portable executable file using Perl?