声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵犯了您的合法权益,请告知,我将及时更正、删除,谢谢。邮箱地址:lc1139411732@163.com
文章目录:
一、项目准备
二、静态分析
三、frida hook
四、本地实现java加密算法
一、项目准备
作者环境:win10 、python3.9.1、java8
开发工具:idea、fiddler、夜神模拟器、jadx
目标app:0715圈APP
二、静态分析
1.点击登录后fiddler抓包,找到登录接口以后,可以看的出来有2个可以参数nonce、codeSign
2. jadx反编译apk,定位加密位置。根据下图所示,轻轻松松,定位到加密位置且找到了加密所需参数。
3.很明显nonce对应的就是java的uuid,这里科普一下,java的uuid其实共分为4中,图中的就是第4中,可以同python的uuid模块重现。
4.codeSign的加密相对来说繁琐一点,我们步进展开看一下。加密的核心v类的a方法与r类的a方法中。
三、frida hook
1.推理出来全部的加密流程后,接下来我们使用frida进行hook动态调试。最终确认我们的分析是正确的,加密的组成部分 json + uuid + 固定数组 + 时间戳 最终采用MD5加密。
frida hook代码
let r = Java.use("com.quan0715.forum.util.r");
r.a.overload('java.lang.String').implementation = function(str){
printStackTrace()
console.log('加密参数:' + str);
let ret = this.a(str);
console.log('加密结果:' + ret);
return ret;
};