一个获取目标进程首地址的方法

来源:互联网 发布:js更改class属性 编辑:程序博客网 时间:2024/06/07 10:30

在头文件中添加以下code:

#include <windows.h> #include <tlhelp32.h> 

在Cpp文件中添加如下的函数,该函数可用于获取目标进程首地址:

(注意AfxMessageBox定义在afxwin.h, 若非在MFC中使用请酌情更改)

//获取目标进程首地址BOOL CImageBloodDlg::getProcessAddr(DWORD dwPID, DWORD& baseAddr){HANDLE hModuleSnap = INVALID_HANDLE_VALUE;MODULEENTRY32 me32;// 在目标进程中获取所有进程的snapshothModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);if (hModuleSnap == INVALID_HANDLE_VALUE){AfxMessageBox(_T("CreateToolhelp32Snapshot (of modules) fail"));return(FALSE);}// 设置MODULEENTRY32数据结构大小字段me32.dwSize = sizeof(MODULEENTRY32);//检索第一个模块的信息,不成功则返回if (!Module32First(hModuleSnap, &me32)){AfxMessageBox(_T("Module32First fail")); // 显示调用失败CloseHandle(hModuleSnap);    // 清除句柄对象return(FALSE);}// 从me32中得到基址baseAddr = (DWORD)me32.modBaseAddr;// 别忘了最后清除模块句柄对象CloseHandle(hModuleSnap);return(TRUE);}

调用该函数即可获取目标进程的首地址。

0 0
原创粉丝点击