tags:
author: Forgo7ten
updated: '2022/03/17 00:03:00'
categories:
Crack
date: 2022-03-17 00:03:00
168轻断食高级版解锁
官网:Fasting - Intermittent Fasting - Google Play 上的应用
version:v1.5.0
高级版功能解锁
逆向分析
还是通过DDMS定位click点击方法。通过点击【获取高级版本】来定位
定位到f.a.a.a.a.a.a.b$a类
经过调试,确定红圈函数是判断是否为高级版;蓝圈函数确定是否为第一次高级版(高级版欢迎界面)
如果没有通过红圈判断,则会为普通版本。
所以Frida脚本如下
function main() {
Java.perform(function () {
Java.use("f.a.a.a.a.a.a.b$a").onClick.implementation = function (arg) {
console.log("b$a.onClick() hooked.");
this.onClick(arg);
};
});
Java.perform(function () {
Java.use("f.a.a.a.d.a.c").I.implementation = function (arg) {
console.log("c.I() hooked.");
var result = this.I(arg);
console.log("c.I() result", result);
// 修改该处返回值,使得始终为专业版
return true;
};
});
Java.perform(function () {
Java.use("bodyfast.zero.fastingtracker.weightloss.iap.PremiumedActivity$a").a.implementation = function (arg) {
console.log("PremiumedActivity$a.a() hooked.");
var result = this.a(arg);
console.log(result);
return result;
};
});
}
setImmediate(main);
重打包APK
只需要让c.I()始终为true,即可。
定位到该方法,修改为如下
.method public final I(Landroid/content/Context;)Z
.locals 1
const/4 v0, 0x1
return v0
.end method
去除签名校验
当修改安装后,发现出现了签名校验
搜索字符串“文件损坏”,定位到如下
可见关键点为ZoeUtils.a的值,而该值由zoecoreso文件是否能成功加载判断
开始对so层进行分析
so层分析
查询手机cpu
adb shell getprop ro.product.cpu.abi
uname -a
Pixel手机是arm64-v8a架构,所以我直接查看arm64-v8a的so文件夹了
同时可强制设置app运行架构(如下,强制设置v7架构)|再或者直接删掉其他文件夹
adb install --abi armeabi-v7a app.apk
先看
libzoecore.so
修改方法就是简单修改跳转,直接赋值返回值、结束函数
libutils-lib.so
定位到只使用了该so的decode和encode函数,但发现同样有签名校验,顺手改掉
修改思路同上
最终效果
同时修改一下Strings.xml中的字符串,最终效果如下