-
-
[求助]关于动态获取API地址的疑惑
-
发表于:
2012-2-2 16:54
2981
-
以下罗云彬老师《Win32汇编程序设计》第17章中动态获取API入口地址的代码(节选),这段代码是根据返回地址_dwKernelRet找到Kernel32.dll的文件头。
;**************************************************************
; 查找Kernel32.dll的基地址
;**************************************************************
mov edi,_dwKernelRet
and edi,0ffff0000h
.while TRUE
.if word ptr [edi] == IMAGE_DOS_SIGNATURE
mov esi,edi
add esi,[esi + 003ch] ;指向PE文件头的指针地址
.if word ptr [esi] == IMAGE_NT_SIGNATURE
mov @dwReturn,edi
.break
.endif
.endif
_PageError:
sub edi,010000h
.break .if edi < 70000000h
.endw
问题1:根据PE文件的知识,在内存中的节是按照页来对齐的(4KB),为什么这里要用0FFFF0000h来对齐,而不是0FFFFF000h来对齐?
问题2:同上,为什么是sub edi,010000h,这里不是01000h,因为4KB=1000H
问题3:为什么终止循环的条件是edi <70000000h?而不是小于其他数值呢?
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法