首页
社区
课程
招聘
[求助]Win 7下定位kernel32.dll基址
发表于: 2015-6-6 16:14 4192

[求助]Win 7下定位kernel32.dll基址

2015-6-6 16:14
4192
以前研究windows下定位kernel32.dll的基地址,有一种PEB的方法,如下:
;find kernel32.dll
find_kernel32:
    push esi
    xor eax, eax
    mov eax, [fs:eax+0x30]
    test eax, eax
    js find_kernel32_9x        ;win9x or nt
find_kernel32_nt:
    mov eax, [eax + 0x0c]
    mov esi, [eax + 0x1c]
    lodsd
    mov eax, [eax + 0x8]
    jmp find_kernel32_finished
find_kernel32_9x:
    mov eax, [eax + 0x34]
    lea eax, [eax + 0x7c]
    mov eax, [eax + 0x3c]
find_kernel32_finished:
    pop esi
    ret
因为win7下PEB结构发生了变化,所以对这段代码进行了改动,如下:
;find kernel32.dll
find_kernel32:
    push esi
    xor ecx, ecx
    mov esi, [fs:ecx+0x30]
    mov esi, [esi + 0x0c]
    mov esi, [esi + 0x1c]
next_module:
    mov eax, [esi + 0x8]
    mov edi,[esi+0x20]
    mov esi ,[esi]
    cmp [edi+12*2],cx
    jne next_module
    pop esi
    Ret
但是为什么在测试的时候,发现获得的kernel32的基地址和用工具查看的kernel32的基地址并不相同呢?
还有,如果用GetModuleHandle(TEXT("kernel32.dll")),获得到的是kernel32的基地址吗,求大神解答

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
GetModuleHandle 句柄=基址
2015-6-6 16:17
0
雪    币: 2325
活跃值: (4878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
win7 不是用kernelbase  了啊
2015-6-6 16:47
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
额。。能不能具体的说一下
2015-6-7 11:03
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
getmodulehandle获取到的就是模块的映像基址,难道楼主64位系统,64位系统有WOW64,可能是这个导致获取的基地址不一样
2015-6-7 21:17
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
真的是64位系统。能详细的说一下为什么会这样吗?谢啦!
2015-6-8 09:54
0
雪    币: 76
活跃值: (206)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
http://alter.org.ua/docs/nt_kernel/procaddr
2015-6-8 10:16
0
游客
登录 | 注册 方可回帖
返回
//