手机
当前位置:查字典教程网 >编程开发 >C语言 >C++获取当前进程IAT的方法
C++获取当前进程IAT的方法
摘要:本文实例讲述了C++获取当前进程IAT的方法,分享给大家供大家参考。具体实现方法如下:复制代码代码如下:#include#includein...

本文实例讲述了C++获取当前进程IAT的方法,分享给大家供大家参考。

具体实现方法如下:

复制代码 代码如下:#include <windows.h>

#include <stdio.h>

int main(int argc, char* argv[])

{

HMODULE hModule = ::GetModuleHandleA(NULL);

IMAGE_DOS_HEADER* pDosHeader = (IMAGE_DOS_HEADER*)hModule;

IMAGE_OPTIONAL_HEADER* pOpNtHeader = (IMAGE_OPTIONAL_HEADER*)((BYTE*)hModule + pDosHeader->e_lfanew + 24); //这里加24

IMAGE_IMPORT_DESCRIPTOR* pImportDesc = (IMAGE_IMPORT_DESCRIPTOR*)((BYTE*)hModule + pOpNtHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);

while (pImportDesc->FirstThunk)

{

char* pszDllName = (char*)((BYTE*)hModule + pImportDesc->Name);

printf("模块名称:%sn", pszDllName);

DWORD n = 0;

//一个IMAGE_THUNK_DATA就是一个导入函数

IMAGE_THUNK_DATA* pThunk = (IMAGE_THUNK_DATA*)((BYTE*)hModule + pImportDesc->OriginalFirstThunk);

while (pThunk->u1.Function)

{

//取得函数名称

char* pszFuncName = (char*)((BYTE*)hModule+pThunk->u1.AddressOfData+2); //函数名前面有两个..

printf("function name:%-25s, ", pszFuncName);

//取得函数地址

PDWORD lpAddr = (DWORD*)((BYTE*)hModule + pImportDesc->FirstThunk) + n; //从第一个函数的地址,以后每次+4字节

printf("addrss:%Xn", lpAddr);

n++; //每次增加一个DWORD

pThunk++;

}

printf("n");

pImportDesc++;

}

return 0;

}

希望本文所述对大家的C++程序设计有所帮助。

【C++获取当前进程IAT的方法】相关文章:

使用ShellClass获取文件属性详细信息的实现方法

C++可变参数的实现方法

C++调试追踪class成员变量的方法

linux c 获得当前进程的进程名和执行路径(示例)

C语言实现静态链表的方法

C++实现基数排序的方法详解

C++获取任务栏打开程序窗口示例

Linux C 获取进程退出值的实现代码

解决C++中重定义的方法总结

linux c 获取本机公网IP的实现方法

精品推荐
分类导航