1.最近感觉时间过的比较混乱,就在网上寻找些时间管理的软件,妄想据此变成时间管理大师,于是在阴差阳错之下,就找到了我们今天的主角。打开软件后,发现也是要花大米才能用会员功能,还挺贵98块呢,该省省,该花花,这钱,我还就不出了。
2.还是和往常一样,np先看一眼,有没有加固?发现又是360加固,这几天算是和360杠上了。
3.还是和之前一样,先上算法助手
4.把脱壳后的文件丢尽jadx反编译后,直接搜索算法助手中出现的这个方法F2
5.在F2中没看出啥来,让我们点点这里面的类,看看有没有啥关联?点进这个UserInfoBean中,我们往下翻,看到了一个VIP字样,立刻警觉,心中划过一个疑问,这会不会是我们要找的?
6.我们发现了这个VIP,先查找下用例,看一下,有这些用例
7.根据这些用例,我们得到了一些信息,比如:this.VIP = i2,然后还看到了VIP的get和set方法,经常做hook改参数,我们就会知道,要对get方法去进行hook,不知道朋友,推荐去看一下get和set方法的用法,所以我们的重点就在这2个getVIP方法上,点进去看看,也没发现什么有用的信息。
8.根据上面的我们知道getVIP是一个int类型,int类型那包含的数字可太多了,我们应该给它设置成啥呢?这下难住了,没办法,我们继续再查看一下getVIP的用例吧
9.我超,好多呀,这怎么看?别急,我们先看com.zjzy.calendartime.ui.mine.StartVipFragment类下的
10.在这里,我们发现了华点,i2==1,这个i2莫名的眼熟,这不就是我们在第7步时看到的this.VIP = i2是相关联的嘛,我们立刻上frida试试,把getVIP的返回值设置为1试试,代码如下
function main() {
Java.perform(function () {
console.log("启动");
let UserInfoBean = Java.use("com.app.modelintegral.data.bean.UserInfoBean");
UserInfoBean["getVIP"].implementation = function () {
console.log(`UserInfoBean.getVIP is called`);
let result = this["getVIP"]();
console.log(`UserInfoBean.getVIP result=${result}`);
return 1;
};
});
}
setTimeout(main, 500)
11.hook之后,我们发现,成功变成了VIP,然后尝试各种VIP功能,也都可以用,接下来该使用Lsposed进行持久化了,废话不多说,直接上代码:
if (loadPackageParam.packageName.equals("com.zjzy.calendartime")){
Log.d(tag,"指尖时光已選中");
Class ActivityThread = XposedHelpers.findClass("android.app.ActivityThread", loadPackageParam.classLoader);
XposedBridge.hookAllMethods(ActivityThread, "performLaunchActivity", new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
XposedHelpers.findAndHookMethod("com.app.modelintegral.data.bean.UserInfoBean", loadPackageParam.classLoader, "getVIP", new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(1);
}
});
}
});
}
12.登录方式可以选择邮箱,没有对邮箱进行验证,只要任意邮箱账号和密码就可以登录使用了,这下大家都可以成为时间管理大师了。
原文始发于微信公众号(Flower Sec):指尖时光app最新版永久vip破解
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论