从 PE 获取 IAT 和 EAT

问题描述 投票:0回答:1

有人可以建议如何使用 python 获取导入地址表 并从PE导出地址表?我目前使用 pefile 模块,但不确定我是否可以使用它来获取 IAT 和 EAT。 非常感谢您的帮助。

python portable-executable
1个回答
3
投票

文档描述了如何操作:

列出导入的符号

每个目录(如果存在于正在处理的 PE 文件中)在 PE 实例中都有一个名为 DIRECTORY_ENTRY_directoryname 的条目。导入的符号如下:

# If the PE file was loaded using the fast_load=True argument, we will need to parse the data directories:
pe.parse_data_directories()

for entry in pe.DIRECTORY_ENTRY_IMPORT:
  print entry.dll
  for imp in entry.imports:
    print '\t', hex(imp.address), imp.name

输出

comdlg32.dll
        0x10012A0L 页面设置DlgW
        0x10012A4L 查找文本W
        0x10012A8L 打印DlgExW
[剪]
SHELL32.dll
        0x1001154L 拖动完成
        0x1001158L 拖查询文件W

列出导出的符号

同样,导出的符号可以列出如下:

for exp in pe.DIRECTORY_ENTRY_EXPORT.symbols:
  print hex(pe.OPTIONAL_HEADER.ImageBase + exp.address), exp.name, exp.ordinal

输出

0x7ca0ab4f SHUpdateRecycleBinIcon 336
0x7cab44c0 SHValidateUNC 173
0x7ca7b0aa 她更改目录 337
0x7ca7b665 SheChangeDirExA 338
0x7ca7b3e1 她更改目录W 339
0x7ca7aec6 她更改目录340
0x7ca8baae 她ConvertPathW 341
© www.soinside.com 2019 - 2024. All rights reserved.