安卓Unity3d游戏的逆向分析
本帖最后由 Free-Man 于 2014-11-23 03:03 编辑使用到的工具
ApkIDE
.NET Reflector
怎么判定它是Unity游戏呢
一般的路径格式是这样的assets\bin\Data\Managed
[如果是个Unity游戏 却找不到dll文件那么 骚年放弃吧。。。
一般情况下都是修改上图的这个dll文件 [如果想要搜索的东西不在这个dll文件可借用notepad++辅助搜索 来判断对哪个dll文件进行修改
以RunningMan这款游戏为例来作以下分析:
内购破解部分就不讲了,因为下面将要修改的比内购的要来的痛快
用ApkIDE反编译之后 找到dll文件就是上图的那个文件用.NET Reflector打开
[.NET Reflector工具的基本使用方法 在论坛里找Dawn老湿的
在手机上试玩了下这个游戏游戏人物居然把女神宋智孝 画的那么抽象 真是太刺激了。。。。
金币-Coin、钻石-Gem、生命-Hp那么着重修改这三个值吧
金币修改:
按下F3搜索,切换到方法搜索
搜到的内容这么多改哪个呢, 容我百度翻译几分钟
红色部分是我现在要修改的蓝色框选到的应该也是能够修改的 我就只拿红色框选的作修改吧修改方法是一样的有兴趣的童鞋也可以把蓝色框选的尝试修改修改~
看Declaring Type那列的暂且理解为游戏数据统计 ,那么综合前面的get_coins可以猜测成游戏金币的统计 动手修改试试吧
双击进入, Toolsàreflexilv1.6
删掉引用的ldfld代码 即第二行
然后修改第一行
看到左边的get_coins():Int32 这个是int32 类型的值,所以OpCade对应选择的是ldc.i4保留ret是为了 从当前方法返回,并将返回值(如果存在)从调用方的计算堆栈推送到被调用方的计算堆栈上。
点击Upadate确认修改
保存Dll文件用IDE编译出来apk看看效果
蛋痛。。。。。
改掉的是每跑一局都会固定获得999999999金币和其他额外金币
好吧,不要在意这些细节也算是达到金币用不完的目的了。。。
钻石修改:
GemCount 钻石总数
同样的方法进行修改
--->--->
点击Update确定修改,保存dll,在用IDE编译出来 测试效果。
钻石也修改好了那么有兴趣的童鞋可以自己尝试着修改人物的血量我这里就不操作了 自己练练手吧
小结:本文主要介绍一下unity3d游戏的本地数据的修改。
2014.11.23
Free-Man
新接触android开发,最近在研究别人的3D图资以及实时合成方法,以为managed下面全是官方unity3D的库,原来自己的代码也放这里。这下知道怎么去分析了。
谢谢分享! 真是学习了。。。 貌似我还有板凳坐? 虽然看不懂,不过还是学习学习 大牛哇!!! 支持高手 感谢大神分享 这样的教程 非常不错学习了 学习了,,,, 涨姿势了 原来是修改c#编写的dll 代码