首页
社区
课程
招聘
[求助]用OD调试游戏的问题
发表于: 2008-1-30 16:11 19406

[求助]用OD调试游戏的问题

2008-1-30 16:11
19406
帖子数目有限,偶只能把几个问题汇总下,提问:
偶是个菜鸟,学了几天破解。今天突发奇想想用OD调试下游戏看看。偶调试的对象是一款Q版武侠网游-----热血江湖。偶首先用CE软件查出人物的当前红地址,蓝地址和人物最大红蓝地址。但是人物的其他属性却找不出来,比如人物ID,人物等级,任务的名称,还有进一步要查找的怪物的ID,怪物的地址,怪物的等级,还有物品的ID,物品的种类这些地址偶都无从下手。这些是偶用CE查热血江湖所得数据:当前红内存地址:044021E0,当前蓝内存地址:044021E4
最大红地址为:044021EC
同理最大蓝地址为:044021F0
因为偶看过一些外挂的源码,所以偶想:偶在OD里边下对当前红内存地址:044021E0下内存写断点,就能够查出人物的其他属性的地址。在游戏里边人物和怪物都一样,可能种类标识不一样,比如人物是6,那么怪物是8,其实都是一个东西。所以找到了人物,也就进一步找到了怪物的各属性地址。但是偶却想错了,首先用OD打开游戏的进程launcher.exe,进入游戏后又来一个进程Client.exe,为什么有2个进程呢?偶勉强可以认为launcher.exe这个进程是启动模块。而Client.exe这个进程才是游戏运行的进程。所以偶关闭游戏,重新登陆游戏,附加Client.exe这个进程。在数据窗口中当前红地址下内存写入断点,f9运行跳到CPU-主线程,模块-kernel32处。一开始是CPU-主线程,模块-Client领空,怎么会跳到这个领空呢?再f9运行,游戏回到重新登陆界面了,偶晕。而且这个界面点确定,弹出“无法连接服务器”错误提示框,点取消跳到ret这条指令上,退出游戏登陆。
7C81EB2D    FF15 0415807C   CALL DWORD PTR DS:[<&ntdll.RtlRaiseExcep>; ntdll.RtlRaiseException
RtlRaiseException这个API是游戏重新启动的关键所在。
既然是输入界面,偶们下API断点吧,下在GetWindowDirtoryA上,结果跳到ntdll模块中去了。偶下的断点一个也米有。
按字串查找,无法连接服务器,也是米反应,难道汉字就无法查找吗?,还是什么地方不对。
有点乱,总结下问题:
1.为什么热血江湖有2个进程,而破解的例子就一个进程?
2.偶知道跳到不同领空是JMP所致,但是这么频繁的跳转偶确实有点晕,有米有不孕的办法吗?
3.当出现错误提示框“无法连接服务器”,偶试着用字串参考去查找,米任何反应,为什么?
4.在登陆界面上下GetWindowTextA断点,结果这个断点找不着了,米办法下到GetWindowDirtoryA上,结果还是啥都米有
5.看来偶的API和OD调式的功底还不够,还得多泡论坛学习啊 。最后还有个问题,前一天提过的,米人搭理偶,可能偶米说清楚吧、就是你附加这个进程Client.exe这个进程的时候,OD提示你当前挂起的进程太多,需要恢复几个,然后弹出一个窗口让你恢复线程,但是点击他们却米有任何反应,为什么?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 47147
活跃值: (20380)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
像“launcher.exe加载Client.exe”,许多游戏都有这方式。你用附加方式是对的。
你附加后,如果停在系统代码里,你要按shift+F9让程序跑起来,然后就可调试游戏了。

另外,如果附加不成功,你可以试试这技巧:
Q:运行A.exe,其会调用B.exe,如果用OD再附加B.exe,OD会死掉
A:
1.OD菜单,设置OD为即时调试器;
2.将B.exe的入口改成CC,即INT 3指令,同时记下原指令
3.运行A.exe,其调用B.exe,会导致异常,OD会自动启动加载B.exe,此时你将INT 3指令恢复原指令。
4.到这步,你己可以任意调试B.exe了(kanxue)
2008-1-30 17:56
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢坛主,偶再试一试。对了,一开始调试时候出现了线程挂起太多的问题,让你恢复一些。后来这个问题就不出现了,不知道为什么?如果再出现偶该怎样解决。
2008-1-31 09:04
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
总结问题都总结的这么经典,向你学习阿
2008-1-31 09:31
0
雪    币: 221
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
调度游戏的话,一个是游戏更新和服务器选择等等这些东西用的,一个是客户端(就是client.exe),你没办法直接运行client.exe的原因是你没有传入正确的参数进去,所以程序就会异常退出来,你需要使用其它工具到这个文件启动的参数,这样就可以直接打开了,所以感觉没有你想象中的这么麻烦,如果你想要通过获得提示文字的方法来查找关键错误点。。估计会很难吧。许多文字都是从文件中提取出来的,并没有固定在这个游戏文件里面。。因此你在进程里是看不到这些文字的
2008-1-31 16:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
还有个问题米解决。线程挂起太多,需要恢复一些,有米有人知道这个问题,请赤脚。
2008-2-2 07:47
0
雪    币: 207
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
类似这样的设置了好几个应用,每次都是应用启动后就弹出一个对话框
xxx.exe遇到问题需要关闭,我们对此引起的不便表示抱歉
如果您正处于进程中,信息有可能丢失.
关于些错误的其它信息,请单击此处.
然后一个调试,一个关闭的按钮,搞不明白是什么问题,是不是OD还要做什么别的设置?
2009-9-1 18:09
0
雪    币: 207
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
来源注册表设置有问题,总算找到答案了,困惑了我很久的一个问题。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
把这里的Auto项设为1就OK了,不过现在一下子出来两个OD,问题还需进一步查找。
2009-9-2 14:52
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9


坛主都现面来解决逆向了..

晕晕晕晕
2009-9-22 11:45
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学到不少东西. .
2009-10-12 14:31
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了。标个记号!
2010-3-3 21:17
0
雪    币: 495
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
文章不错,很有学习价值,就是白字太多读起来有点费解,建议LZ学学五笔
2010-3-3 21:26
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
如果父进程有CRC的话。。。就要再麻烦点了,
偶一直有个疑问就是,父进程传入的命令行每次都不一样,(是一些加密数据)
1 这样子进程是如何进行验证并保证正确运行呢??
2 俺也试了在父进程把当前 启动命令行 截取,然后OD/CE指定命令行参数,但是直接报错

请问这是什么情况???
2011-3-20 11:22
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
收藏起来,
2011-3-21 21:14
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
郁金香VC++外挂编程  视频 里面有找任务基址怪物属性等 内容 还有找技能行走等的CALL  你可以找来看看
2011-4-2 18:46
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习。。。学习,,还是学习
2013-5-7 13:11
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
路过,来mark一下
2013-5-7 13:44
0
游客
登录 | 注册 方可回帖
返回
//