-
-
[求助]Win 7下定位kernel32.dll基址
-
发表于:
2015-6-6 16:14
4192
-
[求助]Win 7下定位kernel32.dll基址
以前研究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的基地址吗,求大神解答
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!