前言
今天这个破解和之前的一样,但是,修改完之后无法进行编译,折腾了一下午,找到了解决方法,特来发个帖子
使用的软件
- Androidkiller
- android逆向助手2.2(百度上搜索一下吧,我这里就不放链接了)
- MT管理器
破解
简单地提一下破解的过程吧
查看了一下,是mono的打包的unity游戏,可以开工了
我们搜索gem(宝石),为什么能知道这个关键字呢?
这里说个小技巧吧,有些游戏是多语言版的,我们可以把游戏的语言设置为英语,从而找到道具的英文名,这样我们就可以获得关键字啦
搜索gem,出现了许多方法和字段,我们一个个看,可以看到,有两个get_Gem的方法,
我们不知道要改哪一个,那么都改吧,改成99999,即是固定了99999,之后不管怎么使用都不会变
之后进行使用Androidkiller反编译,失败了
看了一下错误信息,好像是有些xml文件出现错误了,找了些资料,没有找到解决方法,问题大概是资源文件引起的
MT管理器成功解决问题
忽然想到了MT管理器,拿这个试一下吧
我们电脑修改的是Assembly-CSharp.dll
文件,但是这个好像引用了其他的dll文件,所有,为了以防万一,我们最把整个Managed
文件夹打包成压缩包,之后传到手机里,解压缩,把里面的所有文件都通过MT管理器放在同一个文件夹中
上图中,左边是使用MT管理器打开的apk文件,进入到了asset/bin/Data/Managed
文件夹,右边则是我们在电脑拷贝的
之后需要进行签名,成功安装,宝石也成功修改了
借鉴MT管理器破解思路,使用电脑解决问题
但是我熟悉的环境是电脑,MT管理器虽然成功解决了我的使用Androidkiller无法进行编译的问题,但是我还是喜欢用电脑来进行破解(不会告诉你其实是没钱买MT管理器VIP)
之前也是提到了,出现了Androidkiller无法编译的问题的原因是因为资源文件引起的,既然MT管理器能够解决,那么电脑也是应该有不办法的
观察了一下MT管理器的修改方式,我找到了答案。
MT管理器其实是避开了对资源文件的反编译,既然没有反编译,那么自然谈不上编译了,也就是绕开了资源文件,只对其他部分进行了修改
简单地描述一下MT管理器的破解过程:
首先,把apk文件当作压缩包打开,之后反编译dex文件,得到相关的smali代码,修改代码,回编译为dex文件,之后,对apk进行签名
思路来了,我们电脑上也是像MT管理器那样,把apk文件当作压缩包修改,不对资源文件进行反编译,即可解决问题
流程:
-
使用Androidkiller进行反编译
-
和之前一样,修改smali代码或者是dll文件
-
使用压缩软件打开apk文件,准备往里面丢文件
-
如果是修改了dll文件,把整个Managed文件夹都丢进去,注意是相同的目录
-
修改了smali代码的话,得把整个smali文件夹打开,使用android逆向助手的重打包dex文件功能,生成dex文件
-
使用android逆向助手的替换dex功能,替换apk里面的dex文件,(也可以自己把dex文件名字修改为classes.dex,丢进压缩包目录里面),之后签名apk
另外一种解决方法,是评分的大佬提出来的,在此感谢一下,@lzc090 ,其实是AndroidManifest.xml中的sdk出现的问题,把下图中的两个属性代码删除即可,亲测成功!
测试截图
后话——去除广告
我们到dnspy里面搜索关键字ads,有有个方法名就是NoAds,返回的类型是bool,我们让其一直返回true即可达到无广告的目的
除此之外,游戏闯关里面,可以点击广告来获得金币,但是我不想看广告,使用开发者助手获取到广告界面的Activity的名字,直接到Androidkiller里面搜索这个关键字adunitActivity,之后找到一个方法createVideoPlayer
直接在第一行返回void return-void,即可达到目的
国王之手破解版
https://www.52pojie.cn/thread-858903-1-1.html