接上节课内容
安卓逆向 -- Frida环境搭建(HOOK实例)
安卓逆向 -- FridaHook某车udid的加密值
安卓逆向 -- FridaHook分析3DES加密值
安卓逆向 -- SO文件逆向分析
一、上节课抓包有个sign值
二、用jadx打开,全局搜索"_sign",发现sign值都来自于toSign函数
三、查找toSign函数声明的地方
public static String toSign(Context context, Map<String, String> map) {
if (map == null) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append(getSignKey(context));
for (Map.Entry<String, String> entry : map.entrySet()) {
sb.append(entry.getKey() + entry.getValue());
}
sb.append(getSignKey(context));
return SecurityUtil.encodeMD5(sb.toString()).toUpperCase();
}
四、经过分析最后结果来自encodeMD5函数,我们hook该函数
SecurityUtil["encodeMD5"].implementation = function (str) {
console.log(`SecurityUtil.encodeMD5 is called: str=${str}`);
let result = this["encodeMD5"](str);
console.log(`SecurityUtil.encodeMD5 result=${result}`);
return result;
};
五、查看运行结果,和抓的包一致,只是结果是小写,包里面是大写。所以sign就是上面一大堆参数进行拼接,然后再进行md5运算,最后再转为大写。
参数:W@oC!AH_6Ew1f6%8_appidatc.androidappversion3.16.1channelidcsypwde10adc3949ba59abbe56e057f20f883eudidEmf/VNnohOKgDGg18QXBQFFTz1pKemdyChiQd6+xw1FamdmTTwRuSA==username15836353612W@oC!AH_6Ew1f6%8
加密结果:a9b579e04e9c2ad64dfb3577e6b6d2fe