分身有术pro 软件多开 去更新 登录就是vip 【教程】 仅供学习
软件为当前最新版3.13.0,未来软件更新后方法可能会改变。作者应该混淆过dex,不过关键的地方好像没混淆?
可以适当的添加签名校验以及文件名混淆来加强app的安全性,但是此软件没有签名校验,随便改。
原版软件:https://www.coolapk.com/apk/com.droi.adocker.pro
建议支持正版,可以保存数据。
一、开启至尊会员
首先反编译软件,电脑上先把apk里面的A3AEECD8删掉,要不然反编译会失败,这个文件是谷歌加密的。然后方法名搜索getVipStartTime,定位到com/droi/adocker/data/model/user/User。
我们要改的方法是这三个。
.method public getVipEndTime()J【获取vip到期时间】
.method public getVipMode()Lcom/droi/adocker/data/a/c$c;【获取vip等级】
.method public getVipStartTime()J【获取vip开始时间】
首先是vip开始时间,之前有人已经改过了,赋值2099年,可以换另一个思路,开始时间改成当前手机系统的时间,到期时间为明天。
然后写个smali代码,让app获取当前系统时间,所以改为:
- .method public getVipStartTime()J
- .locals 2
- invoke-static {}, Ljava/lang/System;->currentTimeMillis()J【当前系统时间】
- move-result-wide v0
- return-wide v0
- .end method
复制代码
到期时间我给他加上24小时,就是明天,让他明天到期。改成如下:
- .method public getVipEndTime()J
- .registers 5【注意数量】
- invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
- move-result-wide v0
- const-wide/32 v2, 0x5265c00【24小时×60分钟×60秒×1000,16进制表达式】
- add-long/2addr v0, v2【运算】
- return-wide v0
- .end method
复制代码
让app的开始时间和到期时间左右互搏,不管怎么样都不会到期。
最后getVipMode添加一句代码,让他显示至尊会员。
- .method public getVipMode()Lcom/droi/adocker/data/a/c$c;
- .locals 1
- .line 122
- iget-object v0, p0, Lcom/droi/adocker/data/model/user/User;->vipMode:Lcom/droi/adocker/data/a/c$c;
- sget-object v0, Lcom/droi/adocker/data/a/c$c;->SUPREME_VIP:Lcom/droi/adocker/data/a/c$c;【显示至尊会员,代码来源于intToMode(I)Lcom/droi/adocker/data/a/c$c;方法】
- return-object v0
- .end method
复制代码
改完后回编译测试一下效果,vip功能可正常使用。
二、禁止检测更新
懒人可以直接修改版本号,最快的方法。不过我介绍一下如何修改dex达到禁止更新的目的。
为了更好的查找来源,找了个旧版软件。会弹出上图提示,而且无法关闭,只能强制更新。通过app运行记录,可以发现弹出的窗口来自com/droi/adocker/ui/main/setting/upgrade/UpgradeActivity的onCreate方法。
软件更新有启动自检查和手动检查2种方式,既然有强制更新的行为,不知道手动检查的意义何在
如上图,onCreate这个地方不怎么好修改,如果直接删掉代码会导致FC或者显示异常等情况,所以另找办法。
注意到按钮文字“立即更新”,代码搜索一下看看会有什么结果。
有1个关键结果,然后打开方法列表,可以看到有更新的方法,checkUpgrade(ZZ)V和getUpgradeInfo()Lcom/tencent/bugly/beta/UpgradeInfo;,这个就是检测更新的老巢。其中,.method public static checkUpgrade(ZZ)V的代码非常长,有很多东西在里面,但是修改的方法也很简单,直接return-void就可以了。
再来看getUpgradeInfo,代码如下:
- .method public static getUpgradeInfo()Lcom/tencent/bugly/beta/UpgradeInfo;
- .locals 3
- .line 253
- :try_start_0
- sget-object v0, Lcom/tencent/bugly/beta/upgrade/c;->a:Lcom/tencent/bugly/beta/upgrade/c;
- const-string v1, “st.bch”
- sget-object v2, Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;->CREATOR:Landroid/os/Parcelable$Creator;
- .line 254
- invoke-static {v1, v2}, Lcom/tencent/bugly/beta/global/a;->a(Ljava/lang/String;Landroid/os/Parcelable$Creator;)Landroid/os/Parcelable;
- move-result-object v1
- check-cast v1, Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;
- iput-object v1, v0, Lcom/tencent/bugly/beta/upgrade/c;->b:Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;
- .line 255
- sget-object v0, Lcom/tencent/bugly/beta/upgrade/c;->a:Lcom/tencent/bugly/beta/upgrade/c;
- iget-object v0, v0, Lcom/tencent/bugly/beta/upgrade/c;->b:Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;
- if-eqz v0, :cond_0【判断v0的值】
- .line 256
- new-instance v0, Lcom/tencent/bugly/beta/UpgradeInfo;
- sget-object v1, Lcom/tencent/bugly/beta/upgrade/c;->a:Lcom/tencent/bugly/beta/upgrade/c;
- iget-object v1, v1, Lcom/tencent/bugly/beta/upgrade/c;->b:Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;
- iget-object v1, v1, Lcom/tencent/bugly/beta/upgrade/BetaGrayStrategy;->a:Lcom/tencent/bugly/proguard/y;
- invoke-direct {v0, v1}, Lcom/tencent/bugly/beta/UpgradeInfo;-><init>(Lcom/tencent/bugly/proguard/y;)V
- :try_end_0
- .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
- return-object v0
- :catch_0
- :cond_0
- const/4 v0, 0x0【v0=0表示无更新,1的话就有更新】
- return-object v0
- .end method
复制代码
怎么改应该不用多说了,太简单。改好后回编译测试,已经不再提示更新了,而且手动点击更新无反应。
三、去广告
在没开通会员的情况下去广告,这个教程有点水了。资源文件夹内首先删除jar文件,然后再删一下qq.e.ads的权限即可。
有没有用不知道,如果还是有广告可以用幸运破解器一键爆破
如果幸运破解器都没办法的话只能手动改dex,教程贴在本站数不胜数,不再重复了,这个不难。
本文转载自吾爱破解,原文地址:https://www.52pojie.cn/thread-1211527-1-1.html
赞赏
微信赞赏支付宝赞赏