-
-
[求助]用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期)