环境:MuMu模拟器12
第一步 会员搜索大法
把apk从模拟器中pull出来,然后拖到jadx中,搜索:会员

屏幕截图 2025-04-01 121616.png (187.7 KB, 下载次数: 0)
下载附件
2025-4-1 12:16 上传
找到 “已开通永久会员”,这个字符串的变量名是 purchase_has_lifetime_vip
第二步 查看调用位置
全局搜索 purchase_has_lifetime_vip,定位类 MainMinePrivilegeCardViewHolder

屏幕截图 2025-04-01 122307.png (116.31 KB, 下载次数: 0)
下载附件
2025-4-1 12:24 上传
简单分析逻辑后可以得知前面 if 语句中的条件决定了是否开通永久会员
第三步 写hook脚本
点进a6.a.c后复制为frida片段,写hook代码:
[JavaScript] 纯文本查看 复制代码Java.perform(function () {
let a = Java.use("a6.a");
a["c"].implementation = function (rVar) {
console.log(`a.c is called: rVar=${rVar}`);
let result = this["c"](rVar);
console.log(`a.c result=${result}`);
console.log(`a.c return=true`);
return true;
};
});
接着加载hook脚本

屏幕截图 2025-04-01 122750.png (63.1 KB, 下载次数: 0)
下载附件
2025-4-1 12:28 上传
实际效果

屏幕截图 2025-04-01 122830.png (81.5 KB, 下载次数: 0)
下载附件
2025-4-1 12:28 上传
尝试下会员的手写功能

屏幕截图 2025-04-01 123040.png (82.07 KB, 下载次数: 0)
下载附件
2025-4-1 12:30 上传
居然翻车了...
翻回去发现MainMinePrivilegeCardViewHolder类里还有个高级会员,死马当活马医了

屏幕截图 2025-04-01 123145.png (101.27 KB, 下载次数: 0)
下载附件
2025-4-1 12:32 上传
写新的hook脚本
[JavaScript] 纯文本查看 复制代码Java.perform(function () {
let g = Java.use("a6.g");
g["f"].implementation = function () {
console.log(`g.f is called`);
let result = this["f"]();
console.log(`g.f result=${result}`);
console.log(`g.f return=true`);
return true;
};
g["e"].implementation = function () {
console.log(`g.e is called`);
let result = this["e"]();
console.log(`g.e result=${result}`);
console.log(`g.f return=true`);
return true;
};
});
再来一次

屏幕截图 2025-04-01 123357.png (33.95 KB, 下载次数: 0)
下载附件
2025-4-1 12:34 上传
再试试手写

屏幕截图 2025-04-01 123454.png (69.75 KB, 下载次数: 0)
下载附件
2025-4-1 12:35 上传
成了!收工
参考:https://www.52pojie.cn/thread-1967393-1-2.html