对某app的加密定位与hook
字数 1137 2025-08-24 10:10:13

某APP加密定位与Hook技术分析教学文档

0x01 前言

本文档详细分析了一个专属SRC的APP资产,通过逆向工程和Hook技术破解其加密机制。该APP为部分公司内部人员使用,无注册功能,仅提供登录界面。

0x02 加密参数分析

1. 初始发现

  • 使用Burp Suite抓取登录包时发现加密数据包
  • 主要加密参数:
    • credential:随用户输入变化
    • sign:随request_datacredential变化而变化

2. 逆向工程工具

使用JDAX进行逆向分析,该APP未进行混淆处理,便于分析。

0x03 credential加密分析

1. 定位加密点

  • 通过搜索关键词"credential"快速定位到加密位置
  • 相关方法位于LoginActivityResetActivityUpdateActivity
  • 重点分析LoginActivity中的加密逻辑

2. 加密方法分析

credential的加密与CipherUtil类中的encryptTokenpassword方法相关:

public static String encryptTokenpassword(String str1, String str2, String str3, String str4)

参数分析:

  • str1 -> username
  • str2 -> id_card(推测为身份证号,初始登录时为空)
  • str3 -> password
  • str4 -> 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 后续测试建议

  1. 自动化测试工具

    • 使用Brida框架进行自动化测试
    • 编写Burp Suite插件辅助测试
  2. 漏洞挖掘方向

    • 加密算法逆向分析
    • 参数注入测试
    • 业务逻辑漏洞挖掘
  3. 安全加固建议

    • 增加代码混淆
    • 使用更安全的加密方案
    • 实现动态密钥机制

0x06 总结

本文通过实际案例展示了:

  1. 如何定位APP中的加密参数
  2. 如何分析加密算法逻辑
  3. 如何使用Frida进行Hook验证
  4. 如何为后续测试做准备

掌握了这些技术后,可以对类似加密机制的APP进行有效的安全测试和漏洞挖掘。

某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 方法相关: 参数分析: str1 -> username str2 -> id_ card(推测为身份证号,初始登录时为空) str3 -> password str4 -> old_ password(初始登录时为空) 3. Hook验证 使用Frida编写Hook脚本验证加密逻辑: 验证结果与原始数据包中的 credential 值一致,证明分析正确。 0x04 sign签名分析 1. 定位签名方法 使用关键词"sign_ method"进行搜索 签名逻辑被集成到特定类中 签名算法为MD5加密 2. 签名算法分析 签名生成公式: 其中: 固定前缀:"64c8d2a0e0b2c0bbb611130862cd7b62" request_data :包含 credential 等参数的JSON字符串 最后附加 request_data 的长度 3. Hook验证 使用Frida编写Hook脚本验证签名逻辑: 验证结果与原始数据包中的 sign 值一致,证明分析正确。 0x05 后续测试建议 自动化测试工具 使用Brida框架进行自动化测试 编写Burp Suite插件辅助测试 漏洞挖掘方向 加密算法逆向分析 参数注入测试 业务逻辑漏洞挖掘 安全加固建议 增加代码混淆 使用更安全的加密方案 实现动态密钥机制 0x06 总结 本文通过实际案例展示了: 如何定位APP中的加密参数 如何分析加密算法逻辑 如何使用Frida进行Hook验证 如何为后续测试做准备 掌握了这些技术后,可以对类似加密机制的APP进行有效的安全测试和漏洞挖掘。