使用frida完成【moji辞典V8.4.0】永久会员过程
从MuMu模拟器上下载v8.4.0的moji辞典没有防hook机制(有的话需要把这步加上),所以这里提供一个使用frIDA动态hook的思路
环境:MuMu模拟器12
第一步 会员搜索大法
把apk从模拟器中pull出来,然后拖到jadx中,搜索:会员
找到 “已开通永久会员”,这个字符串的变量名是 purchase_has_lifetime_vip
第二步 查看调用位置
全局搜索 purchase_has_lifetime_vip,定位类 MainMinePrivilegeCardViewHolder
简单分析逻辑后可以得知前面 if 语句中的条件决定了是否开通永久会员
第三步 写hook脚本
点进a6.a.c后复制为frida片段,写hook代码:
[JavaScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
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";
console.log(a.c result=${result});
console.log(a.c return=true);
return true;
};
});
接着加载hook脚本
实际效果
尝试下会员的手写功能
居然翻车了...
翻回去发现MainMinePrivilegeCardViewHolder类里还有个高级会员,死马当活马医了
写新的hook脚本
[JavaScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
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;
};
});
再来一次
再试试手写

浙公网安备 33010602011771号