Python pefile 成员问题

0 投票
2 回答
617 浏览
提问于 2025-04-16 18:02

大家好,

如果这个问题很傻,我先说声抱歉……我想用一个非常方便的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文件,里面会告诉你有哪些属性可用。

或者直接看看这个模块的源代码。虽然代码量很大,但你需要了解的内容都在里面。

撰写回答