Python pefile成员问题

时间:2011-05-20 18:08:23

标签: python

如果这是一个非常愚蠢的问题,我道歉...我想使用解析可执行文件并列出特定信息的超级方便的python脚本pefile(http://code.google.com/p/pefile/)关于PE结构。我的问题是,在哪里可以找到有关如何访问可执行文件的特定成员的信息?我已经浏览了维基并阅读了用法示例,但该文档仅涵盖了4-5名成员。我想知道的是,如果你们有一个我可以访问的成员列表来显示我关心的信息。具体来说,如果我想列出可执行文件的堆栈提交大小,它是否如下所示:pe.FILE_HEADER.StackCommitSize,显然我可以运行此代码并弄清楚但是你们看到了我发现的API DOC浮动我需要的成员?

谢谢!

2 个答案:

答案 0 :(得分:0)

来自PE docstring:

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,你会看到哪些属性可用。

或者只是阅读模块的源代码。它很大,但你需要知道的一切都在那里。

答案 1 :(得分:0)

您通常可以在Microsoft PE/COFF specification中找到PE文件中的所有内容。

看过那里后,您就知道StackCommitSize位于可选图像标题中。然后,您所要做的就是在pefile中查找相应的结构,它通常具有相似的名称,如果不是同一个名称。在这种情况下:

pe = pefile.PE("C:\\Windows\\Notepad.exe")
print pe.OPTIONAL_HEADER.SizeOfStackCommit

会给你你想要的东西。

如果您在查找SizeOfStackCommit时遇到问题(在规范中找到它之后),只需使用source code上的快速查找。这很容易阅读,我认为你找不到所需的结构也不会有任何困难。

现在,pefile本身可能没有任何API文档,但是你可以看到它真的没有必要,因为它只是围绕PE规范本身的一个不错的Pythonic包装器。