查看: 2170|回复: 9

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

[复制链接]
匿名  发表于 2022-9-26 12:57:26 |阅读模式
代码如下:
[pre]
//通过进程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;
    }
}
[/pre]
回复

使用道具

匿名  发表于 2022-9-26 14:26:13
好多干货
回复

使用道具

匿名  发表于 2022-12-28 04:45:17
拿到模块基址还是不够, 还要加上搜索特征码拿到地址
回复

使用道具

匿名  发表于 2022-12-28 04:50:16
全盘搜索指定的DLL怎么写, 游戏会查找挂用到的特定DLL.要破解不知道他用的什么函数.
回复

使用道具

匿名  发表于 2022-12-29 08:53:43
特征码
回复

使用道具

匿名  发表于 2022-12-31 21:22:43
不是特征码,是查找的文件名称, 比如mogui.dll,在C盘驱动目录下, 游戏把文件名上传到服务器了,全盘查找特定文件名怎么写
回复

使用道具

匿名  发表于 2023-1-1 21:54:14
那不就是遍历文件么
回复

使用道具

匿名  发表于 2023-1-2 16:36:03
可以研究一下Everything是怎么快速搜索文件的
回复

使用道具

匿名  发表于 2023-3-10 17:07:50
啥也不说了,感谢老师
回复

使用道具

0

主题

23

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2024-7-24 00:04:37 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表