张老师好.我想定位内核IAT表的位置.发现 IAT表的位置都是0.(在XP启动,进入桌面时)
我的步骤如下:
0: kd> lm vm nt start end module name 804d8000 80700000 nt (pdb symbols) e:\03cracker\01tools\27_win7symbols\ntkrnlmp.pdb\FB6BF595C0344379B369466C1ED25FCB2\ntkrnlmp.pdb Loaded symbol image file: ntkrnlmp.exe Image path: ntkrnlmp.exe Image name: ntkrnlmp.exe 1B7000 [ B5A2] address [size] of Export Directory 20609C [ 50] address [size] of Import Directory 207000 [ 105BC] address [size] of Resource Directory
0: kd> dds nt+20609C 806de09c 00000000 806de0a0 00000000 806de0a4 00000000
我想到重启目标机器后,系统会暂停在一开始(也就是屏幕黑的时候,我也不知道应该用什么术语来称呼这个时段),那个时间,可能会有数据.
kd> dds nt+20609C 806de09c 0020610c 806de0a0 00000000 806de0a4 00000000 806de0a8 002060ec --->指向 BOOTVID.dll 字符串
果然有. 然后我想到,可能在启动的过程中,有代码清除了这个区域的数据.
所以我 在windbg中打入 ba w1 806de09c g 屏幕开始出现XP,登录.桌面.
但整个过程没有自动断下. 我手动断下,发现数据已经被清0了.
问题 1.如果IAT表被清0了.那么ntkrnlmp.exe 如何 找到 导入函数呢?如KDCOM!KDSendPacket. 2.在这个过程中 ba w1 806de09c 无效,而数据已被清除.不知道如何解释这个问题呢?
最后,谢谢张老师.
|