首页
社区
课程
招聘
[求助]金山游侠里的内存搜索是怎么实现的?
发表于: 2007-3-16 20:17 9163

[求助]金山游侠里的内存搜索是怎么实现的?

2007-3-16 20:17
9163
1、用什么函数啊?
2、搜索的时候是只搜索进程空间还是4G都搜索啊?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 380
活跃值: (101)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
2
ReadProcessMemory
搜索2G地址空间就可以了
2007-3-17 12:57
0
雪    币: 333
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
今天下午写了个测试程序,别说搜索2G了,就算搜索1G也慢得要死,循环里只有一个读进程空间的函数,别的啥也没有哦,为什么这么慢呢?我的电脑可是新买的!

要是我会反汇编就好了,可以看看金山游侠到底是怎么做的,谁能反汇编把关键的汇编代码发上来啊?
2007-3-18 19:40
0
雪    币: 309
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不需要搜索全部的2GB的地址空间.只需要搜索你要修改的游戏进程就可以了
2007-3-18 21:05
0
雪    币: 333
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
说得我有些糊涂了,进程空间不就是4G吗?能用的是低2G啊,高位2G是操作系统的,在说我也不是知道他的数据到底是放在进程空间哪里(2G空间),所以得循环搜索啊。
2007-3-18 21:10
0
雪    币: 309
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
这个和进程控制有关.. 修改游戏前你可以先扫描一下内存中的所有进程
用枚举系统进程的函数 CreateToolhelp32Snapshot 然后使用 Process32First和Process32Next 函数
金山游侠修改游戏的时候会叫你选择一个进程..然后就在这个进程里面搜索数据  .

如果你要制作单个游戏补丁的话..可以先用CREATEPROCESS 先创建你要修改的游戏进程为子进程,然后用 READ,WRITE 内存函数 读写修改游戏数据
2007-3-18 21:18
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
7
搜索的时候,根据页属性排除下。会快很多的
只搜索PAGE_READRITE
2007-3-19 02:57
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
8
貌似4*****以前的才有用。后面的内存都不是保存数据的
2007-3-19 10:42
0
雪    币: 12
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用ReadProcessmemory再快也有限。
2007-3-28 09:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2G空间???真正在内存里的没这么大吧,如果你搜索2G的话有很大一部分是在硬盘中的,等那一部份读进内存让你搜索,那个速度不慢才怪呢.所说的2G空间是虚拟内存地址空间(不是我们平时说的虚拟内存,相关资料看<<Windows深入剖析(初始化篇)>>或<<Windows深入剖析-内核篇>>吧).
2007-3-28 10:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
只读页面是不用搜索的,搜可读写的即可!
2007-3-28 12:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
如果是修改游戏的数据好象只搜数据页就行了.
2007-3-28 14:50
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
软件上不是显示搜索范围了吗, 就按照默认的范围就行了
2007-3-29 09:00
0
雪    币: 333
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看了金山的帮助文件知道了金山是先检查是否为内存提交页,是的话在读取比较的。
2007-3-29 19:52
0
雪    币: 189
活跃值: (56)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
用ReadProcessmemory如果慢,有可能一次读的数据量太小了,这种代码网上多的很,随便找找
2007-4-1 23:00
0
游客
登录 | 注册 方可回帖
返回
//