最近下载一个app,打开便发现大大的广告弹窗。严重影响使用体验,而现在大多数的app打开基本都是先谈广告了,是属流氓行为。于是,便动起了自己改造app的心。
一般下载的app,代码基本都在本地了,只有当数据交换的时候才会请求服务器数据。所以一般的请求数据都可以改造,而这种改造的过程,也被我们称之为脱壳。
1.前期准备
已root的手机或者安卓模拟器、mt管理器(部分操作需用到会员功能)
2.app脱壳
安装上述软件,打开xposed install,点击左上角,选择模块,选中反射大师。返回xposed install,点击右上角重启
重启后打开反射大师,选择待破解软件,点击选中该软件,点击打开该软件。
打开软件后有个小红圈,如下图,如果没有,检查步骤2.1,尝试软重启。如果还没有此教程就不适合你了。
点击小红圈,选择当前activity,出现以下界面,长按写出dex,确定,记住保存路径
打开mt管理器,找到要破解app的apk,选择待破解app点击查看,在app中找到classes.dex 文件,选择dex++打开,依次点击com、wrapper.proxyapplication、wrapperproxyapplication,打开后找到如下图所示位置,复制选中的代码。
返回apk包,找到Androidmanifest.xml,选择反编译,在如下图位置
dex++打开classes.dex文件,搜索相关提示语和广告
找到之后,发现有个if判断,将免费版不能关闭提示语之后,if之前的代码删除(此处为判断有无vip然后赋值代码),重新写赋值语句const/4 p1, 0x1(赋值为1),让其通过if-nez(不等于0),从而跳转到cond_1a
搜索'3个” 找到后点开,如下图所示,上面有个 if语句,含义为如果已有规则数p1小于限定条件(const/4 v0, 0x3 意思是将v0赋值3 )就不提示
修改(const/4 v0, 0x3 为(const/4 v0, 0x0) 将赋值改为0,下面的if-lt是小于的意思,改成if-ge,即大于等于,连起来的意思是已有规则数p1大于等于限定条件0就不提示。
相比原来的自定义规则数超过3就用不了,修改后,自定义规则数大于0就可以用,自定义规则数不可能小于0,所以就一直可以用了。
修改完成之后保存,重新封包安装,你就会发现之前的提示语和广告没了。
app的修改有很多方法,并不唯一,选择一个最适合自己的方法就好了。
比如关于破解软件的只能自定义3条规则的限定条件,(即已有3条自定义规则后就无法添加自定义规则了),最简单的修改方法,你可以把限定的3条改成9999条,一样可以达到目的,只是我觉得修改成只有在当前自定义规则条数大于等于0条时才可以添加规则,会比较优雅。