平时里,我们休息的时候喜欢玩点休闲小游戏,不过对于游戏发烧友来说,玩点好玩的稍微大型的游戏则是最好的乐趣,好,今天我们对一款Unity 3D引擎开发的跑酷游戏进行破解分析,主要修改方式为dll文件的相关处理。

游戏名称:死亡航线 Dead Route

开发商:GLU

主要分析对象:dll文件的简单追踪函数和修改

分析步骤1:寻找关键点

打开游戏查看购买过程:

点击商店,点击购买东西,会弹出如下提示:

按照我们以前的方法和思路,那么就是寻找这个字符串吧:

You have not enough cash

不过效果并不理想噢,在所有xml以及smali文件中都没有发现它,怎么办。。

分析步骤2:想想弹框方式

到这里我们就应该想一想在android开发的中是如何控制弹框的,一般来说主要是在代码中使用Dialog,AlertDialg形式,可以用so文件来调用它的显示,当然,这个字符串也可能是存在于so的文件中了。通过搜索,在几个so文件中也并没有搜到相关内容。

就这样放弃,那肯定以后这类游戏就没得搞了,我们继续观察反编译后的文件夹结构

看到红框标注的,这个也只能是通过经验了,了解到这个游戏是Unity 3D引擎开发的游戏,因为这类游戏的assets文件夹下文件格式基本都是这个样子,很固定的。

Unity 3D引擎的相关资料,同学们可以自己搜索下自己了解了解,它采用c#的引擎进行开发的,核心代码都在dll文件中,跟win的dll文件基本一致。

所以游戏开发中会编写相关c#代码作为控制游戏的基本流程代码。于是猜测,弹框是不是就在dll文件中呢,我们打开

assets/bin/Data/Managed文件夹下Assembly-CSharp.dll

因为分析过几个此类游戏,核心代码都在这个名称的文件中,那么我们直接操作这个。

分析步骤3:通过弹框寻找购买的上下控制流程

反编译dll文件有多种方式,经常破解win平台下的软件的朋友会很了解,我在win下的破解很少,所以对于dll的相关操作都是现学的,主要包括反编译,读IL代码,修改。

这里,我们使用的工具为:(相关使用方法,自己搜搜学学即可)

Reflector.exe 反编译工具

Reflexil 分析插件

相关东西百度都可以找到,这里就不再叙述。

使用Reflector打开Assembly-CSharp.dll,使用F3进行搜索:

第一行红框,这里分为三种,我们选择最后一个,搜索字符串和内容。我们发现下面有两个地方调用它,好,这样就达到了我们的预期效果了。

双击一个进入:

C#代码,简单上来说会java基本能看懂点。这里按照c#的方式来讲,这个方法的效果通过名称可以猜到是创建金币不足的对话框,方法里面是创建对话框的内容。

这里就需要分析它的调用了,看是被谁调用,就是在商店购买那里产生的。于是,右击Analyze:

然后发现:

选择第一个,右击,goto Member打开对一个的类,发现:

到了这里,我们就明白了,这里是判断道具的金币数量与我们自己的金币数量做比较,如果道具的价钱大于我们的价钱,那么肯定要弹出我们的金币不足。在这里,我们就知道App.account.money.coins就是我们的金币数量,刚好游戏中氛围金币和银币,这里两个数据正好省的我们继续分析另一个的银币位置的时间了。

一步一步追踪看看coins是在哪里定义:

到App.account.money看到money这里了,发现:

打开A(),我们会发现:

好了,貌似形式非常明朗了。。。

我们找Money这个model,看看它里面是什么东西,这里来看,肯定是coins,cash的对象,也就是金币银币的。

我们这时候需要简单分析这个里面的每一个方法了

到第三个共有方法Money(int cash,int coins),,我们发现如下代码:

这里的a()跟Money里面的pirvate a()是同一个,打开它:

嗯,Eu和Ev的数值,我们刚才通过查看Money类的整体代码,大致明白一个代码coins一个代表cash,所以,我们这里修改

this.Eu=99999999  ,this.EV=9999999

这样,Money(int coins,int cash),在被调用的时候,肯定会将金币修改掉了。

这样修改以后,怎么才能调用呢?

这里跟0比较,那么我们就直接到商店里面的升级upgrade选项,升级东西,一升级肯定得先扣钱,同时有上面的分析过程得知,这里是会调用的。

所以,我们可以先修改一下试试看效果:

开始修改:

首先打开我们安装好的Reflexil插件:

修改过程如下:

第1行:从栈顶取实例指针,并入栈

第2行:ldc.i4.0是载入0

第3行:bge.s是bge的短指令格式<value1>大于等于<value2>跳(注释::一般代码中,都是反着写,因为有自己的逻辑跳到下面的)

第4行:ldarg.0,载入第0个参数并入栈

第5行:这个是咱们修改的,常数9999999

第6行:从栈中取出待存储数据和实例指针,存到Money.Eu里面

好了,这些代码大致就是这些意思,不懂的同学,请搜索:

[微软.NET程序的加密与解密].pdf,看雪的这本书籍。

一定要好好读读。。。

好了,修改完毕后,我们就要开始保存:

到这里以后,我们查看左边的文件结构,我们现在操作的已经是drcore.dll这个文件了。反编译工具会自动识别相关文件夹下的其他dll的,所以我们按照如下图方式操作保存,重命名,替换掉:

开始测试:

替换掉对应的dll文件以后,我们直接回编译,安装。

跳过tips,然后进入shop,选择枪,Upgrade升级

用金币升级看看:

再用银币升级看看:

好了,达到我们的预期效果。。。

那就暂时告一段落。。。

相关文件在百度网盘了。。。

破解完游戏发到了:

http://www.muzhiwan.com/com.glu.deadroute.html

建议大家读一读刚才推荐的书籍:

[微软.NET程序的加密与解密].pdf

听鬼哥说故事,天天都精彩.....
爱破解,爱鬼哥 群号:377724636 ,安卓游戏破解交流...

听鬼哥说故事

听鬼哥说故事之U3D游戏破解分析相关推荐

  1. 听鬼哥说TL大厦的相关分析

    最近一直没有发分析游戏破解类的游戏,刚刚看到一个好玩的游戏更新了,那么我们来分析下新版本的破解. 游戏的破解,主要靠的是积累经验,没有千篇一律的游戏,所以只是照着教程修改是次要的,重要的是破解思路的分 ...

  2. PSP游戏破解分析 – opnssmp.binmesg_led_0X.prx

    序言 距离上一次写PSP破解方面的东西已经过了3年了,这是何等的跨度啊~~~好了,前面两篇算是基础的基础,可以说不管你是想开发自己的程序在自制固件上运行,还是打算走开发自制固件的路,那些都是必备的东西 ...

  3. 按照鬼哥学so变化,四,第一章的例子

    跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化  听鬼哥说故事 ---------------------------------------------切割线--------------- ...

  4. 跟着鬼哥学爬虫-10-python微信-5-加上了人工智能回复!

    跟着鬼哥学爬虫-10-python微信-5-加上了人工智能回复! 其实人工智能回复,现在网上有很多开源的机器学习,AI学习的框架,但是最重要的一点就是没有语料,也就是没有相互回答的数据内容. 所以这个 ...

  5. 跟着鬼哥学so改动,二,进行篇

    图/文  听鬼哥说故事 继续上文的内容---------------------------------- 0x1:測试文件的编写 经过上一篇文章的基础学习,如今我们開始进行是用的部分. 既然我们能够 ...

  6. 跟着鬼哥学so改动,一,准备篇

    图/文 听鬼哥说故事 闲话少说,so的改动,重要性大家都知道,这里从头编写so文件,分析so文件,改动so文件,打算做一个系列的教程,当然,主要是看时间同意. android的sdk配置以及ndk环境 ...

  7. 跟着鬼哥学so修改,一,准备篇

    图/文 听鬼哥说故事 闲话少说,so的修改,重要性大家都知道,这里从头编写so文件,分析so文件,修改so文件,打算做一个系列的教程,当然,主要是看时间允许. android的sdk配置以及ndk环境 ...

  8. 跟着鬼哥学爬虫-3-美女图片!!!

    这一节课,是群里很多娃在等待的课程. 通过前面两篇文章的学习,我们对BeautifulSoup4的简单使用有了了解. 了解了使用这个爬虫的核心是熟悉分析清楚html标签,一些css的简单知识,找准了标 ...

  9. 吉哥系列故事——完美队形II(hdu4513+Manacher)

    吉哥系列故事--完美队形II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) T ...

最新文章

  1. c语言实现椭圆曲线算法,椭圆曲线加密算法的C语言设计和实现
  2. Linux运维工程师必备技能
  3. boost::contract模块实现throw on failure的测试程序
  4. springBoot整合Ehcache——工具类调用
  5. Utils.toDip()的用法
  6. 【Python】部分基础+Flask/JSON/....+零碎笔记
  7. undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow
  8. 【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度
  9. java 集合工具类_Java集合中Collections工具类总结
  10. HTML5 Canvas 车架号第十位是L,汽车生产日期字母对照
  11. c语言社交网络,图论在社交网络中的应用研究
  12. Chorme 模拟分辨率设置
  13. Python 用均匀分布验证中心极限定理
  14. CarSim仿真快速入门(七)—车辆参数化建模
  15. VSAN磁盘组更换硬盘
  16. IDEA中修改Maven的项目名称
  17. 10大耗油,10大省油。
  18. Web前端 学习笔记6(浮动)
  19. 计算机键盘重复,win7系统电脑键盘打字时总是出现重复字符的解决方法
  20. Component series.line not exists. Load it first.

热门文章

  1. mysql y m d h_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) ('.$rows['ndate'].')...
  2. Zcash的“十月围城”
  3. bsdiff算法c语言实现,iOS 使用bsdiff进行资源文件增量更新(bsdiff / bspatch)
  4. SVG 从入门到后悔,怎么不早点学起来(图解版)
  5. 数据库导入导出方法以及注意事项
  6. Netscreen + Squid (Transparent) + c-icap + ClamAV
  7. linux系统如何关闭触控板,在Deepin Linux 15.7系统中开启或关闭触摸板的方法
  8. GUVC-T10GD-L185 臭氧灯监控172nm和185nm紫外线灯监测高可靠性光电二极管杀菌灯监控
  9. Qt下简单WebSocket网络聊天服务器
  10. A + B Proble