VOID ShowDll()
{
//Kernel32.dll基址
DWORD dwBase;
//Dos指针
PIMAGE_DOS_HEADER pDos = NULL;
//Nt指针
PIMAGE_NT_HEADERS pNt = NULL;
//导出表指针
PIMAGE_EXPORT_DIRECTORY pExport = NULL;
//EAT
PDWORD pAddrFuns = NULL;
//ENT
PDWORD pAddrNames = NULL;
//序号
PWORD pAddrOrdinals = NULL;
//函数地址
DWORD dwFunAddr = NULL;
//函数名字
PCHAR pszFuncName = NULL;
//遍历索引
INT nIndex = 0;
//获取kernel32.dll的基址
_asm
{
push eax
mov eax, dword ptr fs : [0x30]
mov eax, [eax + 0x0c]
mov eax, [eax + 0x1c]
mov eax, [eax]
mov eax, [eax]
mov eax, [eax + 0x08]
mov dwBase, eax
pop eax
}
//获取Dos头指针
pDos = (PIMAGE_DOS_HEADER)dwBase;
//获取Nt头指针
pNt = (PIMAGE_NT_HEADERS)(dwBase + pDos->e_lfanew);
//获取导出表
pExport = (PIMAGE_EXPORT_DIRECTORY)(pNt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress + dwBase);
//获取EAT
pAddrFuns = (PDWORD)
动态获取Kernel32的函数地址
最新推荐文章于 2022-07-30 08:17:26 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)