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

devtools/2024/11/28 13:44:15/

首先我们抓取一下我们要测试的app的某一个目标api,通过抓api的包,得到关键字。
例如:关键字:x-sap-ri
在这里插入图片描述
我们得到想要的关键字后,通过拦截 类,寻找我们的关键字,及找到发包收包的位置,并输出当时的调用栈,在栈里我们阔以定位到,是那个包里的类调用了。

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

代码分析

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 方法,并增加了一些额外的日志信息:

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 替换为您要分析的应用程序的包名。

输出结果:

java.lang.Throwableat 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方法里


http://www.ppmy.cn/devtools/137674.html

相关文章

D 型 GaN HEMT 在功率转换方面的优势

氮化镓 (GaN) 是一种 III-V 族宽带隙半导体&#xff0c;由于在用作横向高电子迁移率晶体管 (HEMT) 时具有卓越的材料和器件性能&#xff0c;因此在功率转换应用中得到越来越多的采用。 HEMT 中产生的高击穿电场 (3.3 MV/cm) 和高二维电子气 (2DEG) 载流子迁移率 (2,000 cm 2 /…

RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange

前言&#xff1a; RabbitMQ 延迟队列插件&#xff08;rabbitmq_delayed_message_exchange&#xff09;是一个社区开发的插件&#xff0c;它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件&#xff0c;用户可以创建一种特殊的交换机类型 x-delayed-message&#xff0c;该…

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代&#xff0c;小程序以其轻便、无需下载安装即可使用的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业&#xff0c;小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序&#xff0c;本文将为你提供一个从零开始的详细…

开源客服中心系统的未来趋势、未来前景是什么?

开源客服中心系统的未来趋势、未来前景是什么&#xff1f; 作者&#xff1a;开源客服中心系统 FreeIPCC&#xff0c;Github地址&#xff1a;https://github.com/lihaiya/freeipcc 开源客服中心系统的未来趋势与前景呈现出一种积极向上、创新驱动的发展态势。随着人工智能、大数…

使用ENSP实现默认路由

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为2.2.2.1/24 ip address 2.2.2.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为1.…

基于Java Springboot母婴全程服务管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

CentOS7将yum源更换为国内源教程

CentOS7将yum源更换为国内源教程 阿里云源方式&#xff1a; 打开控制台 以root用户下进行&#xff1a; 将以下步骤中底色标记成黄色的代码逐条输入执行。 步骤 1: 备份当前的 yum 源配置 首先&#xff0c;建议你备份现有的 yum 源配置&#xff0c;以便在需要时可以恢复。…

Git Gui 窗口无法显示

现象 在鼠标右键菜单中选择 “Git Gui Here”&#xff0c;打开 Git Gui窗口&#xff0c;只是在任务栏显示了 Git Gui 正在运行&#xff0c;在桌面上看不到窗口&#xff0c;也无法操作&#xff0c;可以通过AltF4关闭窗口 原因 Git Gui 窗口是显示在屏幕以外了&#xff0c;所以…