关于ntoskrnl.exe模块的IAT

IAT hook一般来说没有问题,ntoskrnl比较不一样,它的输入表在.INIT节,但是被加载之后这个节就补丢弃了,以至于想在内存中解析PE获取IAT将全部失效。但是文件中IAT的RVA跟内存中是一样的,当然这里指的是FirstThunk,面不是OriginalFirstThunk

 

比如ntoskrnl输入表的KDCOM.DLL的KdSendPacket函数如下

lkd> u KdSendPacket
nt!KdSendPacket:
8053fc3e ff2544914d80    jmp     dword ptr [nt!_imp__KdSendPacket (804d9144)]  ;ntoskrnl基址为804d8000h,则rva为1144h
8053fc44 cc              int     3
8053fc45 cc              int     3
8053fc46 cc              int     3
8053fc47 cc              int     3
8053fc48 cc              int     3
8053fc49 cc              int     3

  

下图的本地文件中这个函数的FirstThunkRVA也是1144h

 

 

自此,.INIT节被丢弃没关系

posted on 2012-11-29 01:44  dcai  阅读(440)  评论(0编辑  收藏  举报

导航