Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

WinDbg

帖子发起人: wxl802   发起时间: 2013-05-10 16:38 下午   回复: 4

Print Search
帖子排序:    
   2013-05-10, 16:38 下午
wxl802 离线,最后访问时间: 2013/5/8 2:31:36 wxl802

发帖数前500位
注册: 2013-05-08
发 贴: 3
张老师好,询问关于内核IAT的问题.
Reply Quote
张老师好.我想定位内核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  无效,而数据已被清除.不知道如何解释这个问题呢?

最后,谢谢张老师.







IP 地址: 已记录   报告
   2013-05-10, 20:53 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 张老师好,询问关于内核IAT的问题.
Reply Quote

!dh nt

    1000 [     26C] address [size] of Import Address Table Directory

kd> dds 83007000+1000 L5
83008000  854804bc PSHED!PshedEnableErrorSource
83008004  85480476 PSHED!PshedSetErrorSourceInfo
83008008  854804f6 PSHED!PshedDisableErrorSource
8300800c  85480544 PSHED!PshedGetInjectionCapabilities
83008010  8548057c PSHED!PshedInjectError

 


IP 地址: 已记录   报告
   2013-05-11, 13:35 下午
wxl802 离线,最后访问时间: 2013/5/8 2:31:36 wxl802

发帖数前500位
注册: 2013-05-08
发 贴: 3
Re: 张老师好,询问关于内核IAT的问题.
Reply Quote
张老师,你这个是在XP进入桌面后,断下,显示的内容吗?
我再去试试.

IP 地址: 已记录   报告
   2013-05-11, 20:05 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 张老师好,询问关于内核IAT的问题.
Reply Quote

是的,其实XP和Win7都一样,你前面看的是导入目录(是_IMAGE_IMPORT_DESCRIPTOR结构),不是IAT


IP 地址: 已记录   报告
   2013-05-11, 21:33 下午
wxl802 离线,最后访问时间: 2013/5/8 2:31:36 wxl802

发帖数前500位
注册: 2013-05-08
发 贴: 3
Re: 张老师好,询问关于内核IAT的问题.
Reply Quote
谢谢,张老师,想不到您又回复了.

对 我查看的是
_IMAGE_IMPORT_DESCRIPTOR
这个结构的 FirstThunk 指向的数组结构才叫 IAT.


我在实体机与虚拟机中都试了,在内核加载之初,_IMAGE_IMPORT_DESCRIPTOR是有内容的,但进入windows之后,就没有了.

我查了位置发现 _IMAGE_IMPORT_DESCRIPTOR 在一个INIT的Section

这个Section 是有 MEM_DISCARDABLE 属性

我猜

应该是这段的内容在使用完之后,可以放弃,

因此这个区域的内容被清0了.


IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » Re: 张老师好,询问关于内核IAT的问题.

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.