教你如何分析和修改XBOX游戏
如果转载此文请保留完整!
游戏名称:Dino Crisis 3 (恐龙危机3日版)
所用工具:IDA Pro 4.5 full反编译工具新的版本支持了xbox的xbe文件格式的支持
uedit v10.x 16进制修改工具
EvoXDTSR_02[1].06.04 xbox上类似fpe的修改工具
分析破解难度:普通
分析破解人:大老
所属组织:=BCG= =[DCG]=
本人作品:《文件加密狗检测工具 2.1》
《大老的打狗教程第一篇如何解掉hasp的狗》
《大老的打狗教程第二篇如何解掉深思3的狗》
《大老的打狗教程第三篇(最终篇)如何解掉rockey4的狗》
《Armadill 3.XX 修复导入表加密部分及对应解决方法》
《教你如何破解Gba rom程序》
本人邮箱:dalao@qdcnc.com [email]dalao@top86.com[/email]
本人主页:http://dalao2002.yeah.net
本人论坛:http://61.177.65.168/dalaobbs//index.php?act=idx
Oicq:79234668
此文献给所有爱好解密的朋友们!
网上没有这方面相关的文章我来开个头,我只是大体说一下分析修改的方法!其实和破解加密狗差不多的希望高手不要见笑呀!
希望对大家有所帮助!
========================================================================================================================
(1)先讲讲EVox Trainer和EvoXDTSR_02[1].06.04的使用,给大家讲点基础知识。
引用相关文章,作者是SpriteZ!
========================================================================================================================
EVox Trainer研究报告.
hi, 我是SpriteZ. 近日,连续在个国外的网站搜索并试验,终于将EVox下的Trainer搞定,特与各同好分享.
如有不足之处,欢迎批评指正(spritez_z@hotmail.com).
1. 什么是Trainer?
Trainer其实就是国内俗称的"金手指",PS/PS2,DC,GBA等,都有相应的硬件,但XBOX上一直没有,现在好了,
新版的EvolutionX已经含有这个功能了,在EvolutionX 1.8.3921及更高的版本都含有这个功能了.由于
我手头没有整个系列的EvolutionX,因此,我无法确定,这个功能是从那个版本开始有的,总之,如果你想
使用这个功能,请尽量使用最新版本的EvolutionX!!!
目前, 我使用的是EvolutionX 1.8.3959,所有测试都在此版版本上通过.
2.如何启动Trainer功能?
2.1 很简单,请编辑你的EVOX.INI文件,在你的菜单中,加入如下一行:
Item "Trainers",ID_trainer
保存EVOX.INI文件,并上传到XBOX中C盘,根目录下.
在C盘根目录下创建Trainers目录,将金手指文件,拷贝到此目录中.EVox的金手指文件是.etm结尾的文件
你可从http://trainers.evolutionx.info/下载.
2.2 将EvolutionX中的IGR(In Game Reset)选项设置为Yes,将TSR选项设置为Normal(或Debug).
都做好了吗?那么现在重新启动你的机器(记住,一定要重启你的XBOX).
2.3 XBOX重启后,你的菜单中多了一项Trainers,如果,你的XBOX中c:\Trainers下已经有了金手指文件的话
你可以进入Trainers菜单项,并看到金手指列表.
选中你要启动的金手指,此时,会进入一个新的页面,其中最开始的是Enable项,一般后面还有其他的选项.
如果,你知道这些选项是什么意思,可根据需要选择(Yes).如果,你的英文不是很好,那么,我建议你将所有
的选项都选择Yes.
最后,请记住一定要选择Exit&Save(保存并退出)来结束你的设置.
2.4 恭喜你,现在你可以运行你启动金手指的游戏了(光盘,硬盘都可以).你必定有惊奇的发现.
3.注意事项:
3.1 你可以同时开启多个金手指,如SoulCalibur 2,Dino Crisis 3,Dead to Rights等,EvolutionX会根据
你运行的游戏,来选择启动那个金手指的.
3.2 在你下载金手指文件时,请弄清楚你的游戏的版本(日版,美版,发售日期等),上面说过,EvolutionX会
自动根据你的运行的游戏,选择启动金手指的,如果版本不对,是不会有任何效果的.所以,请弄清版本.
我刚开始,就犯过这样的错误.
3.3 国外网站提供的金手指多半是针对美版的,所以,下回购买游戏时请尽量选购美版的吧
EVox Trainer研究报告(2).
hi, 我是SpriteZ. 近日,连续在个国外的网站搜索并试验,终于将EVox下的Trainer搞定,特与各同好分享.
如有不足之处,欢迎批评指正(spritez_z@hotmail.com).
1. 一堆不得不说的废话:
本篇是上一篇的续,主要叙述关于Evox Trainer的工作原理,并不涉及安装设置问题.因此,如果想知道如
何安装设置并激活Trainer的朋友,请看上一篇就可以了.这篇可供希望更深入了解Trainer,并有一定的
基础知识的朋友阅读.不过请注意,以下谈及的东西,只是我个人的一些心得,并没有直接的文章或权威机
构的信息作印证,难免有错漏之处,敬请阅读者自行纠正,并指正,谢谢.
目前, 我使用的是EvolutionX 1.8.3959,所有测试都在此版版本上通过.
2.EVox Trainer是如何工作的?
目前,我们所见的金手指几乎都要依赖硬件的支持.其原因是,我们必须在一个正常的程序(游戏)运行过程
中,在适当的时机中断它,并获得控制权(运行我们自己编写的程序).至于中断的方法,就是大多数金手指
卡所依赖的硬件,有的金手指卡会有自己的处理器(MCU),其上有自己的程序,可产生外部中断.而我们的PC
机和XBOX则没有相应的金手指硬件,它们是如何使用金手指功能呢?答案是靠系统和BIOS的接口或后门.PC
机上的FPE等大家都熟悉,Windows操作系统本身提供接口,但仍需一定的技巧获得高级控制权.XBOX则就要
依靠我们的EvolutionX和支持IGR的BIOS了(细节可见下节).
从工作方式上看,打多数的金手指是采用定时中断,修改制定的内存数据(Data段),如游戏中主角的生命值,
弹药数量使其固定为某个指定的数值.另一种是,只在程序运行前运行一次,修改游戏的程序(Text段),将修
改某内存单元(如游戏中主角的生命值,弹药数量)的指令清除或屏蔽掉.EVox Trainer就数于这种方式.
这两种方式各有优点,第一种,实现简单,可制作成独立的模块.初级水平的人也可自己制作金手指,只要找到
要修改的内存单元,指定好数据,金手指模块会自动锁定数值.而第二种,则实现复杂,制作金手指的人必须要
能够阅读游戏程序(汇编程序 -_-# )的相应部位,确定如何修改,才能生成相应的金手指程序(*.etm)文件.但
优点是,不只可用于金手指,还可对程序进行patch(打补丁).因此,适应范围更广.
3.EVox Trainer是如何启动的?
那么,EVox Trainer是如何启动的呢?还记得我在上一篇中曾提到,在EvolutionX设置中要将IGR和TSR打开吗?
如果你够聪明,你就能够想到,IGR可产生中断,而TSR则允许加载我们的金手指程序(*.etm).
IGR(In Game Reset)将启动EvolutionX对手柄IRQ中断的监视.可知道我们是否运行了default.xbe程序.
default.xbe是所有XBOX游戏的默认执行程序,其中含有标识游戏的两个重要的信息,"Title ID"
和"TimeDate Stamp".当EvolutionX发现启动了一个default.xbe时,就检查其中的这两个信息,如果和
C:\Trainer中Enable的Trainer信息吻合是,就先执行Trainer程序(*.etm).此时,Trainer程序将修改已经加载
到内存的default.xbe程序.之后,EvolutionX会运行内存中的default.xbe程序,我们的游戏开始了.
明白了吗?所以,Trainer程序是要挑default.xbe文件的,如果,游戏的版本或日期与Trainer不符,Trainer
是不会运行的.因此,你可以同时Enable多个Trainer,EvolutionX会自动启动相应的文件的. ^_^
但,另一方面,如果,你发现,你下载的Trainer Enable后没有起作用,那么,只能说明游戏的版本或日期和
Trainer只定的不一样.
关于TSR我就不想多说了,概念和当年DOS中的TSR相同,有兴趣的人,可查阅相关资料.
4 最后的废话:
我不知道会有几个人有兴趣阅读这篇文章,可能难懂一些.但毕竟我整块的时间不是很多,所以,我还是
趁现在一鼓作气,写了这篇.不知道高级篇(制作Trainer)还有没有机会写出来.也许,更多的是和个别感兴趣
的朋友私下交流吧.
我不是一个真正的玩家,借口是没有充裕的时间慢慢打关练级,所以搞一些金手指的旁门左道,希望大家不要
学我.
摘自:
http://www.xbox-sky.org
=====================================================================================================================
《一定要看》
作者还有一篇文章重要,这个讲了如何用EvoXDTSR_02[1].06.04这个工具来找游戏里咱们感兴趣的数据地址
EVox Trainer研究报告(高级篇上)带图
下载地址:
<1>
http://61.177.65.168/dalao/crack/EVoxTrainer.rar
<2>
http://www.xbox-sky.org/attachment.php?s=&postid=142190
=====================================================================================================================
(2)xbox的游戏主执行文件名都是default.xbe ,现在进入正题如何分析修改这个xbe文件,我讲2个部分 分别是Tempests 弹药
=====================================================================================================================
<1>武器弹药部分
先用EvoXDTSR_02[1].06.04这个工具来查找武器弹药的地址,不会的请看SpriteZ写的文章
经过3次左右的查找后就会找到353114这个地址poke这个地址后果然是Tempests数量的地址,
然后用鼠标双击Breakpoints窗口里的#0会弹出一个Create a new breakpoint:的窗口在offset:里添上353114这个地址size选byte
如果是比较大的数超过6位就选dword或word,break on:选write 点ok后这个断点就设置完成了!现在在回到游戏里发射Tempests
EvoXDTSR_02[1].06.04会弹出一个新的中断窗口!注意看第2项的19B0C地址纪录后用IDA PRO 4.5反编译default.xbe程序
完成后,按G输入19B0C回车即可来到下面部分:
mov edx, [esp+28h+arg_0]
.text:00019AF1 mov ecx, dword_353114[edx*4]===============>从内存里取数据
.text:00019AF8 xor eax, eax
.text:00019AFA add edi, offset unk_203440
.text:00019B00 cmp ecx, eax ================〉判断弹药是不是用完
.text:00019B02 jle short loc_19B0C===============〉用完就跳
.text:00019B04 dec ecx==========> 注意这里是ecx-1 没有用完弹药数量减一
.text:00019B05 mov dword_353114[edx*4], ecx 弹药数据写回原来的地址
.text:00019B0C
.text:00019B0C loc_19B0C: ; CODE XREF: sub_19A60+A2j =========〉会到这向上看找DEC指令
.text:00019B0C mov ecx, [ebp+1DB4h]
.text:00019B12 mov edx, [ecx+5E4h]
.text:00019B18 xorps xmm0, xmm0
.text:00019B1B inc edx
.text:00019B1C mov [ecx+5E4h], edx
.text:00019B22
有两种改法!(1)把00019B04可以改成inc ecx机器码是41就是加1
(2)也可以把00019B04改成nop机器码是90就是啥也不做!
=======================================================================================================================
<2>改弹药无限
方法和第<1>部分差不多我简单说一下
找到00352f04这个弹药存放地址设断点中断后会显示0005CCED这个地址再ida pro 中按G输入后来到下面
.ext:0005CCCA mov edx, [esi+1DB4h] ; default
.text:0005CCD0 mov eax, [edx+418h]
.text:0005CCD6 push eax
.text:0005CCD7 push esi
.text:0005CCD8 call sub_4F320===============〉取弹药存放地址
.text:0005CCDD add esp, 8
.text:0005CCE0 test eax, eax ===============〉找到没有
.text:0005CCE2 jz short loc_5CD04 ====〉没有找到就跳
.text:0005CCE4 mov ecx, [eax] ====〉找到了!取出弹药数量到ecx
.text:0005CCE6 test ecx, ecx =========>是不是用完了
.text:0005CCE8 jle short loc_5CCED 用完了跳
.text:0005CCEA dec ecx 没有用完弹药数量减一
.text:0005CCEB mov [eax], ecx 把弹药数量写回到地址里
.text:0005CCED
.text:0005CCED loc_5CCED: ; CODE XREF: sub_5BDB0+F38j
.text:0005CCED cmp dword ptr [eax], 0 =================〉会到这向上看找DEC指令
.text:0005CCF0 jnz short loc_5CD04
.text:0005CCF2 mov eax, [esi+1DB4h]
.text:0005CCF8 mov ecx, [eax+330h]
.text:0005CCFE mov [eax+334h], ecx
同样有两种改法!(1)把0005CCEA可以改成inc ecx机器码是41就是加1!改了以后那以后打枪的时候弹药不是减1了而是加1!
(2)也可以把0005CCEA改成nop机器码是90就是啥也不做!
==========================================================================================================================
教程写完了!希望对看过的朋友和想修改xbox软件而找不到方法的朋友有所帮助!
本来想写个Trainer程序(*.etm)来动态修改default.xbe文件结果写了一个用MXT_EasyEvoXTrainerMaker 1.0生成的etm不好用!
后来直接分析修改的文件弹药金钱Tempests无限!需要的朋友我可以到我的网站上下载!
支持的朋友回个贴子!谢谢!
相关工具的下载地址!可以到www.baidu.com上搜索!
大老
写于
04:20 凌晨 2004-07-20
如果转载此文请保留完整!
==========================================================================================================================
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)