1.问题:hook不到对应的函数
先通过app抓包分析,发现我们要找的接口是xxxxxx/loginByPassword,主要的加密参数在{"encryptParam":"D7qgDE6jklD76L6rpyJVts4sFzULcBHi7fUgo//QrMjQchiZKk6i1czrSCRHuQXp5r9Ezdfm/g491q0P/l4tVQowotCsmfI1mSXW1LyHLme0A/yoYJb8g=="}
接下来用jadx分析接口
直接搜索encryptParam可以看到对应的加密板块
public static String e(String str, String str2) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
Charset charset = f35971a;
cipher.init(1, new SecretKeySpec(str2.getBytes(charset), "AES"));
return b(cipher.doFinal(str.getBytes(charset)));
} catch (Exception e10) {
g(e10);
return null;
}
}
复制名称,发现此函数在ac.l0中
写一个hook脚本
Java.perform(function(){
console.log("Class found and loaded--");
let lo = Java.use("rc.l0");
lo.e.implementation = function (str, str2) {
console.log("into----")
console.log(`l0.e is called: str=${str}, str2=${str2}`);
let result = this["e"](str, str2);
console.log(`l0.e result=${result}`);
return result;}
});
发现无论怎么样都没hook到
2.排查问题
查找一下函数试下
// // 查找函数
// Java.enumerateLoadedClasses({
// onMatch: function(name) {
// if (name.includes("rc.l0")) console.log("Found class:", name);
// },
// onComplete: () => {}
// });
发现 void rc.l0.e(android.content.Context,java.lang.String)
入参和我hook app的不大一样啊
按照app的版本void rc.l0.e(java.lang.String,java.lang.String) 才对
查看jadx的app版本和我手机安装的不一致啊
修改函数位置之后重新尝试
可以看到已经正确的hook到了
3.结论:
重要问题说三遍
jadx分析的app一定要和手机安装的版本一致 !!!
jadx分析的app一定要和手机安装的版本一致 !!!
jadx分析的app一定要和手机安装的版本一致 !!!