8 1 0

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

admin
583 8

代码如下:

//通过进程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;
    }
}
最后于 1月前 被admin编辑 ,原因:
最新回复 ( 8 )
全部楼主
  • 2
    好多干货
  • 3
    拿到模块基址还是不够, 还要加上搜索特征码拿到地址
  • 4
    全盘搜索指定的DLL怎么写, 游戏会查找挂用到的特定DLL.要破解不知道他用的什么函数.
  • admin 楼主 @Ta 0
    5
    塞外风 全盘搜索指定的DLL怎么写, 游戏会查找挂用到的特定DLL.要破解不知道他用的什么函数.
    特征码
  • 6
    不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
  • admin 楼主 @Ta 0
    7
    塞外风 不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
    那不就是遍历文件么
  • 塞外风 不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
    可以研究一下Everything是怎么快速搜索文件的
  • 9
    啥也不说了,感谢老师