资源共享吧|易语言论坛|逆向破解教程|辅助开发教程|网络安全教程|www.zygx8.com|我的开发技术随记

 找回密码
 注册成为正式会员
查看: 1492|回复: 9

[C/C++] c++怎么读64位程序的模块基址

[复制链接]

11

主题

102

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
2
积分
105
贡献
0
在线时间
41 小时
注册时间
2021-12-28
最后登录
2024-9-29

终身VIP会员

发表于 2022-4-18 12:34:36 | 显示全部楼层 |阅读模式
1资源币
求大佬给个例子
捕获.JPG
回复

使用道具 举报

2

主题

112

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
12
积分
114
贡献
0
在线时间
73 小时
注册时间
2021-9-2
最后登录
2024-10-22

终身VIP会员

发表于 2022-4-18 12:34:37 | 显示全部楼层
  1. //获取模块基址
  2. PVOID GetModuleBaseAddr(const char* szWindowName, const char* szModuleName)
  3. {
  4.         DWORD pid = GetProcessId(szWindowName);
  5.         HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,NULL,pid);
  6.         MODULEENTRY32 me32;
  7.         ZeroMemory(&me32, sizeof(me32));
  8.         me32.dwSize = sizeof(me32);
  9.         HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
  10.         unsigned long long baseAddr = 0;
  11.         while (Module32Next(hModuleSnap, &me32))
  12.         {
  13.                 if (strstr(me32.szModule, szModuleName))
  14.                 {
  15.                         break;
  16.                 }
  17.         }
  18.         printf("%16s模块基址=%#p,%16s模块大小=%#x\n",szModuleName, me32.modBaseAddr, szModuleName,me32.modBaseSize);
  19.         CloseHandle(hModuleSnap);
  20.         CloseHandle(hProcess);
  21.         return me32.modBaseAddr;
  22. }

  23. DWORD GetProcessId(const char* szWindowName)
  24. {
  25.         HWND hwnd = FindWindowA(NULL, szWindowName);
  26.         DWORD pid = 0;
  27.         GetWindowThreadProcessId(hwnd, &pid);
  28.         return pid;
  29. }
复制代码


回复

使用道具 举报

2

主题

112

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
12
积分
114
贡献
0
在线时间
73 小时
注册时间
2021-9-2
最后登录
2024-10-22

终身VIP会员

发表于 2022-4-18 17:14:18 | 显示全部楼层

鬼谷八荒亲测有效。项目测试文件:
链接:https://pan.baidu.com/s/1xHEa7oJDwah6G8J7biDEoQ?pwd=gr9b
提取码:gr9b
--来自百度网盘超级会员V5的分享
回复

使用道具 举报

11

主题

102

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
2
积分
105
贡献
0
在线时间
41 小时
注册时间
2021-12-28
最后登录
2024-9-29

终身VIP会员

 楼主| 发表于 2022-4-18 20:16:10 | 显示全部楼层

CreateToolhelp32Snapshot弄不了64位游戏
回复

使用道具 举报

2

主题

112

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
12
积分
114
贡献
0
在线时间
73 小时
注册时间
2021-9-2
最后登录
2024-10-22

终身VIP会员

发表于 2022-4-18 23:29:44 | 显示全部楼层
we104676 发表于 2022-4-18 20:16
CreateToolhelp32Snapshot弄不了64位游戏

编译成64位程序获取到的就是64位
回复

使用道具 举报

11

主题

102

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
2
积分
105
贡献
0
在线时间
41 小时
注册时间
2021-12-28
最后登录
2024-9-29

终身VIP会员

 楼主| 发表于 2022-4-19 12:57:26 | 显示全部楼层
littleboy 发表于 2022-4-18 23:29
编译成64位程序获取到的就是64位

报错了,你真的用过CreateToolhelp32Snapshot取64位程序模块基址?
捕获1.JPG
回复

使用道具 举报

2

主题

112

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
12
积分
114
贡献
0
在线时间
73 小时
注册时间
2021-9-2
最后登录
2024-10-22

终身VIP会员

发表于 2022-4-19 17:10:03 | 显示全部楼层
本帖最后由 littleboy 于 2022-4-19 17:27 编辑
we104676 发表于 2022-4-19 12:57
报错了,你真的用过CreateToolhelp32Snapshot取64位程序模块基址?

QQ截图20220419171516.png
你是不是没有定义这个函数?建议你先看看我分享的项目文件
QQ截图20220419171516.png
回复

使用道具 举报

11

主题

102

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
2
积分
105
贡献
0
在线时间
41 小时
注册时间
2021-12-28
最后登录
2024-9-29

终身VIP会员

 楼主| 发表于 2022-4-19 18:37:56 | 显示全部楼层
本帖最后由 we104676 于 2022-4-19 18:42 编辑
littleboy 发表于 2022-4-19 17:10
你是不是没有定义这个函数?建议你先看看我分享的项目文件

多谢大佬,搞定了,我的不能像你那样把etProcessId放在GetModuleBaseAddr后面
回复

使用道具 举报

2

主题

112

帖子

0

精华

资源共享吧豪华贵族SVIP

Rank: 9Rank: 9Rank: 9

资源币
12
积分
114
贡献
0
在线时间
73 小时
注册时间
2021-9-2
最后登录
2024-10-22

终身VIP会员

发表于 2022-4-19 20:21:32 | 显示全部楼层
we104676 发表于 2022-4-19 18:37
多谢大佬,搞定了,我的不能像你那样把etProcessId放在GetModuleBaseAddr后面

建议你多了解一点C语言基本语法,定义放在源文件里,声明放在头文件里。
回复

使用道具 举报

1

主题

49

帖子

0

精华

注册会员

Rank: 2

资源币
105
积分
51
贡献
0
在线时间
2 小时
注册时间
2022-3-15
最后登录
2022-8-1
发表于 2022-5-9 15:03:42 | 显示全部楼层
祝资源共享吧越来越火!
回复

使用道具 举报

 点击右侧快捷回复  

本版积分规则

小黑屋|资源共享吧 ( 琼ICP备2023000410号-1 )

GMT+8, 2024-12-4 16:38 , Processed in 0.070555 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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