记[音频剪辑]软件破解VIP
之前看到一篇基于源码修改实现的破解, 然后就打算利用xposed
直接hook破解, 正好利用之前我写过的一个基于xstudio
的vscode插件.
第一步反编译APK
对于反编译, 在这里我就不过多展开了, 这个APP没加固,反编译几乎没难度.
定位关键代码
简单看一下目录结构, 发现这个类比较少, 点进去看看, 看看能不能发现啥彩蛋.
https://imgchr.com/i/uSLYq0
DingyueActivity.class
, 看到这个Activity, 感觉是和付费相关的, 读一下代码, 证实了我的猜想.
看到这里, 我们可以发现他这个使用SharedPreferences
存储的记录, 我们想尝试一下直接hook他的默认值, 看看能不能绕过去.
在这里有几个字段
timeExpire: 过期时间
在这里我们直接破解永久, 可以发现他的值要改成 2099-01-01 xxxxxxxx
后面这些是我凑数的. 因为他比较的都是子串.看代码有一个>10
的判断, 所以后面随便加一点吧.
isLifetime: 这个是一个bool, 返回true 就能实现绕过支付.
isR: 返回true
其余字段和绕过支付关系不大, 不予解释了.
然后直接上代码吧, 在这里只粘贴关键代码.
// hook func: java.lang.Object com.lafonapps.paycommon.payUtils.wechatUtils.SPUtils.b
var before_func = function(param) {
if (param.args[1] == 'isVIP') {
param.args[2] = new java.lang.Boolean('true');
} else if (param.args[1] == 'isLifetime') {
param.args[2] = new java.lang.Boolean('true');
}
}
查看hook
的时候还发现了一个isVIP
的字段, 顺手也给该成true了.
// hook func: java.lang.String com.blankj.utilcode.util.SPUtils.b
var after_func = function(param) {
param.setResult('2099-01-01 xxxxxxx');
}
修改timeExpire
的返回值
然后, 我们可以顺手吧登录和其他的一块hook掉.
// hook func: public boolean com.blankj.utilcode.util.SPUtils.b(java.lang.String,boolean)
var before_func = function(param) {
if (param.args[0] == 'isLogin') {
param.args[1] = new java.lang.Boolean('true');
}
if (param.args[0] == 'isDiscount') {
param.args[1] = new java.lang.Boolean('true');
}
if (param.args[0] == 'isR') {
param.args[1] = new java.lang.Boolean('true');
}
}
// hook func: java.lang.String com.blankj.utilcode.util.SPUtils.b(java.lang.String,java.lang.String)
var before_func = function(param) {
if (param.args[0] == 'timeExpire') {
param.args[1] = '2099-01-01';
}
else if (param.args[0] == 'mobile') {
param.args[1] = '13300000000';
}
}
这样就成功破解掉VIP功能了.
附成功截图:
https://imgchr.com/i/uSLVKI
https://imgchr.com/i/uSLZrt
这样hook之后默认会有登录, 我没有登录的需求, 因此就一块hook, 大家也可以自行修改.
本教程仅做学习使用. 总的来说, 这个APP还是比较简单的.
附一个原APP下载地址: 音频剪辑-小米应用商店
关于xstudio的使用, 请自行找论坛的帖子吧.
参考资料
解锁一款Android应用VIP功能详细思路 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn