8 1 1

获取任意进程任意模块的基址

admin
1396 8

本文共计1632个字,预计阅读时长6.1分钟。

代码如下:

//通过进程ID获取某模块的基址
void GetMoudleBaseAddr(DWORD dwPid, const TCHAR* szDllName, DWORD& dwDllBase)
{
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 进程快照句柄
PROCESSENTRY32 pi = { sizeof(PROCESSENTRY32) }; // 快照信息
// 遍历进程

while (Process32Next(hProcessSnap, &pi))
{
    if (pi.th32ProcessID == dwPid)
    {
        HANDLE  hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pi.th32ProcessID);  // 模块快照句柄
        MODULEENTRY32 me32 = { 0 };  // 模块入口
        me32.dwSize = sizeof(MODULEENTRY32);  // 申请空间

        // 打印模块名
        while (::Module32Next(hModuleSnap, &me32))
        {
            if (_tcscmp(me32.szModule, szDllName) == 0)
            {
                dwDllBase = (DWORD)me32.modBaseAddr;
                break;
            }
        }
        return;
    }
}

}

//通过进程名获取某模块的基址 void GetMoudleBaseAddr(const TCHAR szProcName, const TCHAR szDllName, DWORD& dwDllBase) { HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 进程快照句柄 PROCESSENTRY32 pi = { sizeof(PROCESSENTRY32) }; // 快照信息 // 遍历进程

while (Process32Next(hProcessSnap, &pi))
{
    if (_tcscmp(pi.szExeFile, szProcName) != 0)
    {
        continue;
    }

    HANDLE  hModuleSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pi.th32ProcessID);  // 模块快照句柄
    MODULEENTRY32 me32 = { 0 };  // 模块入口
    me32.dwSize = sizeof(MODULEENTRY32);  // 申请空间

    // 打印模块名
    while (::Module32Next(hModuleSnap, &me32))
    {
        if (_tcscmp(me32.szModule, szDllName) == 0)
        {
            dwDllBase = (DWORD)me32.modBaseAddr;
            break;
        }
    }
    break;
}

}

最后于 9月前 被admin编辑 ,原因:

最新回复 ( 8 )
全部楼主
  • 妮妮 @Ta 0
    2
    好多干货
  • 3
    拿到模块基址还是不够, 还要加上搜索特征码拿到地址
  • 4
    全盘搜索指定的DLL怎么写, 游戏会查找挂用到的特定DLL.要破解不知道他用的什么函数.
  • 塞外风 全盘搜索指定的DLL怎么写, 游戏会查找挂用到的特定DLL.要破解不知道他用的什么函数.
    特征码
  • 6
    不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
  • 塞外风 不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
    那不就是遍历文件么
  • 塞外风 不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
    可以研究一下Everything是怎么快速搜索文件的
  • 9
    啥也不说了,感谢老师
  • 游客
    10

    您需要登录后才可以回帖

    立即登录 立即注册