安卓Unity3d游戏的逆向分析及代码破解

使用到的工具

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游戏的本地数据的修改。



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)

最新评论