通过抓包,使用frida定位加密位置

首先我们抓取一下我们要测试的app的某一个目标api,通过抓api的包,得到关键字。

例如:关键字:x-sap-ri

我们得到想要的关键字后,通过拦截 类,寻找我们的关键字,及找到发包收包的位置,并输出当时的调用栈,在栈里我们阔以定位到,是那个包里的类调用了。

使用 Frida 脚本用于监控 Java 中 HashMapput 方法,特别是当键为 "x-sap-ri" 时,记录调用栈和键值对。这个脚本可以帮助我们在动态分析 Android 应用时捕获特定的键值对操作。

代码分析

javascript 复制代码
Java.perform(function (){
    // 获取 HashMap 类的引用
    var hashMap = Java.use("java.util.HashMap");
    
    // 重写 put 方法的实现
    hashMap.put.implementation = function (a, b) {
        // 检查键是否为 "x-sap-ri"
        if(a != null && a.equals("x-sap-ri")){
            // 打印调用栈
            console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            // 打印键和值
            console.log("hashMap.put: ", a, b);
        }
        // 调用原始的 put 方法
        return this.put(a, b);
    }
});

关键点解释

  1. Java.perform: 这是 Frida 的一个函数,用于确保在 Java 虚拟机环境中安全地执行代码。所有的 Java 相关操作都应该在这个函数内部进行。

  2. Java.use : 用于获取 Java 类的引用。在这里,我们获取了 java.util.HashMap 类。

  3. hashMap.put.implementation : 通过重写 put 方法的实现,可以在调用该方法时插入自定义逻辑。

  4. 条件判断 : 检查键 a 是否为 null,并且是否等于 "x-sap-ri"。如果条件满足,则记录调用栈和传入的键值对。

  5. 调用原始方法 : 使用 this.put(a, b) 调用原始的 put 方法,以确保 HashMap 的正常功能不受影响。

完整示例

以下是一个改进后的完整示例,监控 putget 方法,并增加了一些额外的日志信息:

javascript 复制代码
Java.perform(function () {
    var hashMap = Java.use("java.util.HashMap");

    // 重写 put 方法
    hashMap.put.implementation = function (a, b) {
        if (a != null && a.equals("x-sap-ri")) {
            console.log("[INFO] hashMap.put called with key: " + a + ", value: " + b);
            console.log("[TRACE] Call stack: " + Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
        }
        return this.put(a, b);
    };

    // 重写 get 方法
    hashMap.get.implementation = function (a) {
        var value = this.get(a);
        if (a != null && a.equals("x-sap-ri")) {
            console.log("[INFO] hashMap.get called with key: " + a + ", returned value: " + value);
        }
        return value;
    };
});

运行脚本

要运行这个 Frida 脚本,需要:

  1. 在设备上安装 Frida Server。
  2. 使用 frida -U -l your_script.js -f com.example.app 命令启动目标应用程序并加载脚本,com.example.app 替换为您要分析的应用程序的包名。

输出结果:

cpp 复制代码
java.lang.Throwable
	at java.util.HashMap.put(Native Method)
	at org.json.JSONObject.put(JSONObject.java:276)
	at org.json.JSONTokener.readObject(JSONTokener.java:394)
	at org.json.JSONTokener.nextValue(JSONTokener.java:104)
	at org.json.JSONObject.<init>(JSONObject.java:168)
	at org.json.JSONObject.<init>(JSONObject.java:185)
	at com.shopee.shpssdk.SHPSSDK.uvwvvwvvw(Unknown Source:81)
	at com.shopee.shpssdk.SHPSSDK.requestDefense(Unknown Source:59)

hashMap.put:  x-sap-ri 443e41678c54f44f62b70d1901d115bc703ebab92a5b4251176d

在com.shopee.shpssdk.SHPSSDK.uvwvvwvvw方法里

相关推荐
2603_965148115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
九硕智慧建筑一体化厂家5 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
jufeng13077 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 8 篇】
python·ai agent·配置系统
circuitsosk7 小时前
跨境电商智能化实战:AI如何赋能客服自动回复、广告智能投放与供应链预测
大数据·人工智能·python·langchain·智能客服
chunmiao30327 小时前
DeepSeek V4-Pro 正式版上线,API 8月17日起分时调价
网络·安全
2601_956319888 小时前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
过期的秋刀鱼!8 小时前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计8 小时前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
湘美书院--湘美谈教育8 小时前
湘美书院主理人谈AI文学:提示词与Skill的与时俱进
大数据·人工智能·安全·自动化·生活
hz567899 小时前
视频会议终端对接详解:协议兼容、系统集成与常见问题
安全·实时音视频·信息与通信