我想出了如何做到这一点,希望这会帮助别人。回想起来,答案就在最初的问题中。它只是在发布时没有点击。这是使用 pydbg 和 pefile 实现的。这是一个很好的小练习,它迫使我真正熟悉 PE 文件格式。
# Get module PE header base and size
for mods in dbg.iterate_modules():
if mod.lower() == str(mods.szModule.lower()):
print('Mod: {0} Base: {1}'.format(mods.szModule,
hex(mods.modBaseAddr)))
addr = mods.modBaseAddr
size = mods.modBaseSize
break
# Read PE header in memory
pe = pefile.PE(data=dbg.read_process_memory(addr, size))
pe.parse_data_directories(directories=[
pefile.DIRECTORY_ENTRY[u'IMAGE_DIRECTORY_ENTRY_IMPORT'],
])
# Traverse IAT
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print(entry.dll)
print('#'*20)
for imp in entry.imports:
print('Address:{0} API:{1}'.format(hex(imp.address), imp.name))