首页
社区
课程
招聘
关于内存修改[求助]
发表于: 2005-4-13 00:31 4811

关于内存修改[求助]

2005-4-13 00:31
4811
想写个游戏编辑工具遇到一个问题。
设有特征代码如下:
00629946   |.  57                  push edi
00629947   |.  8983 4E0A0000       mov dword ptr ds:[ebx+A4E],eax
0062994D   |.  7E 0A               jle short 00629959

我想读取
00629947   |.  8983 4E0A0000       mov dword ptr ds:[ebx+A4E],eax
处ds:[ebx+A4E]的数值(在特定版本中是个定值),方便之后对其指向的内存地址进行修改。
mov dword ptr ds:[ebx+A4E],eax语句在软件不同版本中的地址是不一样的,
我的想法是:
loder载入进程后扫描特征字串定位语句地址,然后通过调试api读取语句中
ds:[ebx+A4E]的数值,保存下来进行修改。
行的通吗?有没有例子或者更好的方法达到这个目的?
关键是如何读取mov dword ptr ds:[ebx+A4E],eax中ds:[ebx+A4E]的数值

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
http://bbs.pediy.com//showthread.php?threadid=10522

参考一下。
2005-4-13 10:58
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
谢谢,这个帖子我看过了,当时看完还学着写了个patch:)
这次的情况大体相同,但有2点不一样:
1,原程序有自校验,修改了就会自动掉线,不能运行。
2,我想做一个针对这个软件的通用版本的修改工具,但这个地址是不同版本是不一样的,就是特征码的位置也不一样。所以我只想到搜索特征码的方法来定位代码位置。
第一次写这样的东西,也没什么好思路,写的很慢,现在才刚完成定位代码位置这个部分,读取ds:[ebx+A4E]数值这部分还不知道怎么下手。
2005-4-13 14:59
0
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
4
1,我没法帮你。
2,你可以像如下方法进行测试:
ReadProcessMemory(hProcess,(int *)0x0049466A,OBJ_code,1,0);
//获取0x0049466A代码:如为修改前的0x50或修改后的0xE9则继续运行,
//否则可认定游戏版本不符。
if (OBJ_code[0]==0x50||OBJ_code[0]==0xE9)

把每个版本需要修改的地址都读出来,然后分别进行比较。
2005-4-13 16:26
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
5
最初由 Vegeta 发布
1,我没法帮你。
2,你可以像如下方法进行测试:
ReadProcessMemory(hProcess,(int *)0x0049466A,OBJ_code,1,0);
//获取0x0049466A代码:如为修改前的0x50或修改后的0xE9则继续运行,
//否则可认定游戏版本不符。
........

如果手动修改,只要能定位这个地址,读取
mov dword ptr ds:[ebx+A4E],eax
处[ebx+A4E]处指向的内存地址,写个内存patch即可,之前我也
一直是这样做的,但每次更新版本后,都要这样找地址,比较麻烦,
不同的版本某处的数据是不一定的,这样不能达到通用的目的呀。
2005-4-13 23:37
0
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
6
根本就没明白我的意思:
就是因为不同的版本某处的代码不一样才能在PATCH中判断VER。
VER1:0001-》9090
VER2:0002-》7590
在PATCH中分别读取:0001和0002的代码,
if ==90
do...
else ==75
do...
2005-4-14 10:41
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
7
可是如果出新版本,此处的代码是什么我不可能知道呀?所以我想还是只能通过搜索特征码来定位,照以前的经验,版本变了,这段特征码是不变的,这样就可以直接应用于新版本的修改。
参照<加密技术>中的bpm sample code(ASM)代码,总算把这个东西完成了。
2005-4-14 20:27
0
游客
登录 | 注册 方可回帖
返回
//