首页
社区
课程
招聘
[求助]获取win7下“动态加载”的kernel32
发表于: 2010-12-6 09:42 4496

[求助]获取win7下“动态加载”的kernel32

2010-12-6 09:42
4496
听说过Win7下获取Kernel32.dll地址时需要考虑动态加载,本人初学可能理解的不对,请大家指教啊~这几天终于熟悉了windbg,但是用vmware下的32位win7调式的结果和想象的“动态加载”不一样,不知道有何玄机
参考 xfish 的帖子http://bbs.pediy.com/showthread.php?t=85910已经列举了常用查找Kernel32的办法,就拿我认为最常见的第三种方法来说,
  
    mov eax, [fs:30h] ;Get Peb
    mov eax, [eax+0ch] ;Get _PEB_LDR_DATA
    mov eax, [eax+1ch];Get InInitializationOrderModuleList.Flink, 此时eax指向的是ntdll模块的InInitializationOrderModuleList线性地址。所以我们获得它的下一个则是kernel32.dll
    mov eax, [eax]
    mov eax, [eax]; XP下不需要,win7需要
    mov eax, [eax+8] ; 8 = sizeof.LIST_ENTRY

加上红色一行的话win7下就可以正常获取,在win7下InInitializationOrderModuleList的加载顺序是ntdll->kernelbase->kernel32(就我调试数次的结果)

当然,我也用遍历InLoadOrderModuleList 的方式来取得kernel32,而且kernel32也是固定顺序位置,不知道这个所谓的“动态加载”是什么,还是我的环境没法看出来,或则概率有限?请大家指点啊~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
windbg多看下命令 我也是在这里被阻截了,有几个 内核没导出 但是内核dll导出的函数 现在我已经累瘫了
2010-12-6 14:04
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
知道问题了,是说kernel32具体加载地址是变化的,这个加载链表的顺序是固定的,win7之前的可以写具体地址,win7的只能搜出来
2010-12-6 23:52
0
游客
登录 | 注册 方可回帖
返回
//