;*****************************************************************************************
;const void* __stdcall GetAPIAddr(const void* hModule,const char* lpszProcName)
;等价于 const void* __stdcall GetProcAddress(const void* hModule,const char* lpszProcName)
;*****************************************************************************************
GetAPIAddr:
push ebp
mov ebp,esp
pushad
mov ebx,[ebp+8]
mov esi,[ebp+12]
;检查是否是有效的 PE 文件格式
cmp word [ebx], 'MZ'
jne .NoExportTable ;是不是有效的 PE 文件
mov eax, [ebx + 3CH]
add eax, ebx ;eax = PE Header
cmp dword [eax], 00004550H ;PE/0/0
jne .NoExportTable
;搜索需要的 API 地址
mov edx, [eax + 04H + 14H + 60H]
test edx, edx
jz .NoExportTable ;没有输出表
add edx, ebx ;计算输出表位置
;NumberOfFunctions
WinAPI: GetProcAddress 自实现
最新推荐文章于 2018-01-23 14:02:29 发布