对某app的加密定位与hook
字数 1137 2025-08-24 10:10:13
某APP加密定位与Hook技术分析教学文档
0x01 前言
本文档详细分析了一个专属SRC的APP资产,通过逆向工程和Hook技术破解其加密机制。该APP为部分公司内部人员使用,无注册功能,仅提供登录界面。
0x02 加密参数分析
1. 初始发现
- 使用Burp Suite抓取登录包时发现加密数据包
- 主要加密参数:
credential:随用户输入变化sign:随request_data中credential变化而变化
2. 逆向工程工具
使用JDAX进行逆向分析,该APP未进行混淆处理,便于分析。
0x03 credential加密分析
1. 定位加密点
- 通过搜索关键词"credential"快速定位到加密位置
- 相关方法位于
LoginActivity、ResetActivity、UpdateActivity - 重点分析
LoginActivity中的加密逻辑
2. 加密方法分析
credential的加密与CipherUtil类中的encryptTokenpassword方法相关:
public static String encryptTokenpassword(String str1, String str2, String str3, String str4)
参数分析:
str1-> usernamestr2-> id_card(推测为身份证号,初始登录时为空)str3-> passwordstr4-> old_password(初始登录时为空)
3. Hook验证
使用Frida编写Hook脚本验证加密逻辑:
function credital_encrypt(){
Java.perform(function(){
console.log("Fucking credital...")
Java.use("com.richfit.qixin.utils.CipherUtil").encryptTokenpassword.implementation = function(str1, str2, str3, str4){
//str1->username; str2->""; str3->password; str4->""
var res = this.encryptTokenpassword("test1", "", "123456", "")
console.log(res);
return res;
}
})
}
验证结果与原始数据包中的credential值一致,证明分析正确。
0x04 sign签名分析
1. 定位签名方法
- 使用关键词"sign_method"进行搜索
- 签名逻辑被集成到特定类中
- 签名算法为MD5加密
2. 签名算法分析
签名生成公式:
sign = MD5("64c8d2a0e0b2c0bbb611130862cd7b62" + request_data + request_data.length)
其中:
- 固定前缀:"64c8d2a0e0b2c0bbb611130862cd7b62"
request_data:包含credential等参数的JSON字符串- 最后附加
request_data的长度
3. Hook验证
使用Frida编写Hook脚本验证签名逻辑:
function md5_encrypt(){
Java.perform(function(){
console.log("Fucking Md5...")
Java.use("com.richfit.rfutils.utils.MD5Utils").digest.implementation = function(a){
var res = this.digest('64c8d2a0e0b2c0bbb611130862cd7b62{"login_type":"manual","credential":"7S809HYx8eUGDAwKEo2TWUUUrVpj4XgTswTOyU8aS9pdqd+SZqDVP16ieWLj5QzmgXQx4gESwAddmNFSgY1ePclyxnA13JJ8gXQx4gESwAdSOJnrVtdBwjyuh1SMWDnvM6oFcq35MPhnLn91ABYP5hkfnlYuHaO9BSeaVdv2e2Y=","device_type":"android","is_brief":"true"}253')
console.log(res);
return res;
}
})
}
验证结果与原始数据包中的sign值一致,证明分析正确。
0x05 后续测试建议
-
自动化测试工具
- 使用Brida框架进行自动化测试
- 编写Burp Suite插件辅助测试
-
漏洞挖掘方向
- 加密算法逆向分析
- 参数注入测试
- 业务逻辑漏洞挖掘
-
安全加固建议
- 增加代码混淆
- 使用更安全的加密方案
- 实现动态密钥机制
0x06 总结
本文通过实际案例展示了:
- 如何定位APP中的加密参数
- 如何分析加密算法逻辑
- 如何使用Frida进行Hook验证
- 如何为后续测试做准备
掌握了这些技术后,可以对类似加密机制的APP进行有效的安全测试和漏洞挖掘。