Python pefile 成员问题
大家好,
如果这个问题很傻,我先说声抱歉……我想用一个非常方便的Python脚本pefile(http://code.google.com/p/pefile/),它可以解析可执行文件,并列出PE结构的特定信息。我的问题是,我在哪里可以找到关于如何访问可执行文件中特定成员的信息?我已经仔细看过维基百科,读过使用示例,但那些文档只涵盖了4到5个成员。我想知道你们有没有一个可以访问的成员列表,以便我能显示我关心的信息。所以具体来说,如果我想列出一个可执行文件的堆栈提交大小,像这样写:pe.FILE_HEADER.StackCommitSize,显然我可以运行这段代码来弄清楚,但你们有没有看到过可以找到我需要的成员的API文档?
谢谢!
2 个回答
0
你可以在微软的 PE/COFF 规范 中找到PE文件里的所有内容。
看完这个规范后,你会知道 StackCommitSize 在可选的图像头部里。接下来,你只需要在 pefile 中找对应的结构,通常这个结构的名字会很相似,甚至是完全一样。在这个情况下:
pe = pefile.PE("C:\\Windows\\Notepad.exe")
print pe.OPTIONAL_HEADER.SizeOfStackCommit
这段代码会给你想要的结果。
如果你在找到 SizeOfStackCommit 之后还有困难,可以在 源代码 中用快速查找功能。这个代码非常容易读,我相信你能顺利找到需要的结构。
现在,pefile 本身可能没有API文档,但如你所见,其实也没必要,因为它只是对PE规范的一个很好的Python封装。
0
来自PE
的文档说明:
Basic headers information will be available in the attributes: DOS_HEADER NT_HEADERS FILE_HEADER OPTIONAL_HEADER All of them will contain among their attributes the members of the corresponding structures as defined in WINNT.H
所以,你可以查看winnt.h文件,里面会告诉你有哪些属性可用。
或者直接看看这个模块的源代码。虽然代码量很大,但你需要了解的内容都在里面。