文章仅供学习参考,严禁非法使用,如非法使用,而导致的一切后果,由使用者自负
一、目标应用
aHR0cHMlM0EvL3d3dy53YW5kb3VqaWEuY29tL2FwcHMvODI4NjIxMy9oaXN0b3J5X3Y5
二、分析流程
- 反编译apk查看相关信息
- 功能使用的通过该处判断的需要多少金豆
-
定位关键代码
-
hook策略制定
- 通过hook SPUtil中的get方法,判断是该场景获取需要金豆数量时,返回0
- 关键hook代码
Java.perform(function () {
var keyArr = [
"fenggezhuanhuan",
"guopuxiufu",
"heibaishangse",
"katongmanhualian",
"laozhaopianxiufu",
"lashentuxiangxiufu",
"qingxiduzhengqiang",
"renxiangshumiao",
"secaizhengqiang",
"wushunfangda",
"zhaopianquwu",
"zhinengkoutu",
"zhinengmeiyan"
];
var Intger = Java.use('java.lang.Integer');
var SPUtil = Java.use('com.dqh.basemoudle.util.SPUtil');
SPUtil.get.implementation = function (key, defaultObj) {
if (keyArr.indexOf(key) != -1) {
console.log('*******key:' + key + ",defaultObj:" + defaultObj);
return Intger.$new(0);
}
console.log('get called key:' + key + ",defaultObj:" + defaultObj);
let retval = this.get(key, defaultObj);
console.log("retval:" + retval);
return retval;
}
});
声明
文章仅供学习参考,严禁非法使用,如非法使用,而导致的一切后果,由使用者自负。禁止将本文技术或者本文所关联的Github项目源码用于任何除学习外的目的。文中案例应用均来自网络,若有侵权烦请告知,第一时间删除。