阅读:1964回复:2
请教
;********************************************************************
; 查找 Kernel32.dll 的基地址 ;******************************************************************** mov edi,_dwKernelRet and edi,0ffff0000h; 我不太明白这句的意思,和下面突然的得到了IMAGE_DOS_SIGNATURE .while TRUE .if word ptr [edi] == IMAGE_DOS_SIGNATURE mov esi,edi add esi,[esi+003ch] .if word ptr [esi] == IMAGE_NT_SIGNATURE mov @dwReturn,edi .break .endif .endif _PageError: sub edi,010000h .break .if edi < 070000000h .endw |
|
|
沙发#
发布于:2005-05-12 12:07
代码有些问题,这个方法就是
就是暴力搜索,最开始_dwKernelRet是在kernel32中的一个地址,应该是and edi,0fffff000h,源代码,多了一个0,按照4k对齐,因为pe头肯定加载在4k对齐的地址上,从高地址往低地址搜索,找到kernel32的pe头,每次 sub edi,01000h,源代码还是多了一个0,减少4k,为的是加快搜索速度 |
|
板凳#
发布于:2005-05-12 12:08
谢谢,问题我早解决了!
|
|
|