本帖最后由 CrazyNut 于 2018-12-2 23:22 编辑
前言
先提两个问题:
1.Dnspy怎么可以更方便的搜索字符串,我发现只能在当前脚本里面搜内容,并不知道怎么直接搜dll里面的方法名
2.有没有什么办法可以动态调试
膜拜一下各位大佬
《跳舞的线》这个游戏用了u3d的Mono打包方式,不加密的话反编译出来就和源码一样【按理说想怎么改游戏就怎么改】
但是脚本太多,要找到关键的脚本就需要去猜测作者的思维,作者对脚本的命名方式,找的到脚本怎么好说,找不到只能干瞪眼
因为自己也在用U3D来开发,所以我这篇文章主要说破解时候的思路,代码修改方面就不详细解释
进入正题
准备工具
Dnspy,Androidkiller,一款能打开apk的压缩工具
一点点的英语基础和一点点的语言基础
判断是否是U3D的游戏,并且是不是Mono打包
没什么好说的看到路径\assets\bin\Data\Managed下有
Assembly-CSharp.dll这个文件,肯定就是Unity的Mono打包方式的作品了
思路流程
首先我们要看一下游戏,决定自己要破解的东西
这款游戏我们要搞的就是
能量-金币-广告-内购【内购没干掉这都是后话了= =】
破解流程:
把Managed文件夹下所有dll拖进dnspy从中找到关键函数,修改代码以达到目的
而游戏的关键脚本通常都在Assembly-CSharp.dll中,所以通常我们只用关注这个dll里面的脚本就行
开搞
把Managed文件夹下所有dll解压到同一个文件夹
然后把Assembly-CSharp和Assembly-CSharp-firstpass拖入dnspy
然后可以看到有这么多的类
从类名入手,先找找有没有什么特别的名字,比如money,playerdata之类的东西
这里可以看到Assembly-CSharp-firstpass只有两个没什么关系的东西,那就重点关注Assembly-CSharp里的那么多类
我找到了一个叫Playerdata的东西= =结果里面并没有储存什么钱一类的东西 然后类里面我也没发现其他和我们要破解的内容有关系的类
然后打开最上面-的那个类,和游戏有关的脚本一般都在里面! 至于为什么知道,自己打包过一次看看就知道了。。
找到修改金币和能量的地方
然后我在这里面看到一个名字有趣的脚本叫ShopPanel
应该就是商店界面的意思,既然是商店界面,里面肯定有和购买有关的代码
我们看到这个ShopPlane的脚本里面有一个Buy的方法
肯定就是购买相关的方法了,具体看下面图
然后我们去看一下这个getcoin的地方 OK金币就改好了
改能量
我们看到我们之前修改的金币的类Monetyzation中
有ConisController【金币管理】[刚刚修改的脚本] 和 EnergyController【能量管理】这两个脚本
所以EnergyController肯定就是我们要修改能量的地方
顺便一说- - 这个人和我的命名习惯很像欸= =什么的控制脚本就是xxController
下面还看得到LuckyBoxController 【幸运盒子管理】和SpecialGiftController【特殊礼物管理】
这两个脚本就是控制游戏里面游戏抽奖的东西,不过既然都无限金币了,我也没有去改什么中奖概率什么的= =有兴趣的可以自己去改一改
继续看EnergyController
修改后
能量修改完毕上游戏看看
好的,看来金币和能量都修改成功了,广告还是没搞掉,现在开始搞广告
搞广告
同样的方法 - - 通过名字找脚本广告嘛,多半和AD有点关系 = =找到和AD有关的脚本
从上面可以看到作者真棒 命名习惯都是一样的 AdsController 明摆着就是 【广告管理】啊
打开这个脚本看到有这么多方法,挨个挨个的看具体是干什么的。。
直到看到一个方法。。
可以很明显的看出AreAdsBlocked这个Bool值就是控制是否是买了那个区去广告的判断标准,true就是为购买,所以去看看这个Bool值赋值的地方
这个直接修改返回值为true就行
ok 上游戏看看
好的可以看到广告购买的这一项已经没有了,判断是你已经购买了
但是
这种地方还有观看广告免费解锁的地方,
点这个按钮就会开始看广告,看完后关卡就解锁,所以我们要改一下这个地方
目标很明确,思路也应该很清晰,找到播放广告的地方,直接改成播放成功
回到这个AdsController看里面的方法,里面有
WatchVideo 【观看视频】
VideoWatchFailed 【视频观看失败】
VideoWatchedWithSuccess【视频观看成功】
VideoWatchCancelled 【视频观看被关闭】
这些方法,已经很明显了,看看代码
轻微改动一下观看成功中的代码,然后直接把watchvideo里面的所有代码删了换成播放成功的就行
ok 现在点击广告就不会播放广告了,直接进入播放完毕的流程
最后把Assembly-CSharp.dll替换进原路径,用Androidkiller签一下名完毕
成品链接:https://www.52pojie.cn/thread-832018-1-1.html
如果帖子有帮助到你,给一个免费评分支持一下噢!Thanks!
|