Re: 如何显示一个模块的导入表?

WinDbg

如何显示一个模块的导入表?


cato 2009-06-08, 10:32 上午
用windbg x命令可以显示被加载模块的符号,但需要符号文件.如果没有符号文件的情况下,请问如何在调试时显示一个被加载模块(EXE或DLL)的导入表呢?谢谢

Re: 如何显示一个模块的导入表?


格蠹老雷 2009-06-08, 13:08 下午

下面这样做不知是否满足你的要求?

1, lm命令找到模块的起始地址

0:001> lm vm notepad

start end module name 01000000 01014000 notepad

2, !dh 命令显示PE头信息,注意下面这样的一行:

!dh 01000000 ... 1000 [ 348] address [size] of Import Address Table Directory

3, 使用dd或者dds命令观察导入表

0:001> dds 01000000+1000 l (348/4)
01001000  77dd6fc8 ADVAPI32!RegQueryValueExW
01001004  77dd6bf0 ADVAPI32!RegCloseKey
01001008  77df8f7d ADVAPI32!RegCreateKeyW
0100100c  77dfd5fd ADVAPI32!IsTextUnicode
01001010  77dd7883 ADVAPI32!RegQueryValueExA
01001014  77dd761b ADVAPI32!RegOpenKeyExA
01001018  77ddd7cc ADVAPI32!RegSetValueExW
0100101c  00000000
01001020  773dd260 COMCTL32!CreateStatusWindowW
01001024  00000000
01001028  77f2d7e9 GDI32!EndPage

...

因为系统在加载模块时会修改导入表,上面是加载完成时的状态

 

Powered by Community Server Powered by CnForums.Net