接上节课内容
安卓逆向 -- 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