能力值:
( LV2,RANK:10 )
|
-
-
2 楼
上网搜了下,都是用and ,ax 0f000的,
楼主有没眼花?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
; 查找 Kernel32.dll 的基地址
;********************************************************************
mov edi,_dwKernelRet
and edi,0ffff0000h
.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
pop fs:[0]
add esp,0ch
popad
mov eax,@dwReturn
ret
_GetKernelBase endp
这是罗老大书上的例子
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
搜索下google嘛,我刚刚搜索了,
原来是windows加载dll是64k对齐的
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
哪本书上有讲的?我怎么一点印像也没有?我记得节表里全是按4k对齐的。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
节表是,不过dll加载的基址不是。。
病毒专题里面也有,你找下吧
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
文件中的_GetKernelBase子程序的参数是主程序从堆栈中得到的返回地址,程序首先设置一个SEH异常处理子程序,以免在搜寻内存的过程中访问到无效的页面后出错;接下来将参数中传递过来的目标地址按页对齐(与0ffff0000h进行and操作);然后以每次一个页的间隔在内存中寻找DOS MZ文件头标识和PE文件头标识,如果找到的话,表示这个页的起始地址就是Kernel32.dll模块的基址。
罗老大再版的书不知道改了这些问题了没。
这些话误导了我,现在明白了。谢谢楼上。
|
|
|