不设回复后可见,拒绝白嫖,还请回复,大佬勿喷
教程开始:
首先使用arsc编辑器,搜索外国软件关键词"subscription",成功找到类似"subscription_expired"订阅过期的疑似目标字符串
dex中常规搜索此id未找到结果(只能找到R.id的映射),推测是使用直接引用,故直接搜索"subscription_expired"
找到类UserAccountModel中getSubscriptionInfo方法,转成Java并观察if语句
发现多处this.application.getPersistance().getSubscriptionType(),由英文得此处大概率为关键代码
回到Smali,跳转到getSubscriptionType(找到方法名,长按选择跳转)
得到的是接口类,选择上方指南针,长按选择“查找重写方法”
找到具有实际意义的Persistance.getSubscriptionType()
此处可选择查找调用处,看此方法需要满足什么条件可使程序进入VIP状态,题主使用了第二种方法
因为此类疑似关键工具类,此方法返回的String又不方便确定数值,故查看此类中是否存在其他返回Boolean的方法
这边找到的是isWebSubscribed()和getGooglePlaySubscriptionValid(),实际本软件还可通过更改其他方法破解
进入Smali编辑,令其返回true (新手可直接复制以下内容,覆盖原方法)
.regusters 2
const/4 v0, 0x1
return v0
回编译保存,成功破解,点击订阅,显示“一次购买”