当前位置: 首页 > news >正文

Frida-dexdump 使用指南:从内存中脱取安卓 Dex 文件

我们来详细讲解一下 frida-dexdump 的用法。这是一款非常强大的、基于 Frida 的脱壳工具,常用于安卓应用的安全分析和逆向工程。

一、工具简介

frida-dexdump 是一个命令行工具,它利用 Frida 的注入能力,将目标安卓应用中正在内存里运行的 Dex 文件转储(Dump)出来。这对于分析经过加壳保护的 App 特别有效,因为很多加固技术会动态加载解密后的 Dex 到内存中,而 frida-dexdump 可以直接从内存中获取这些原始数据。

核心原理:附加到目标进程 -> 遍历内存 -> 识别 Dex 文件特征(如魔数 dex\n035\0)-> 将找到的内存块导出为 .dex 文件。

二、安装

安装非常简单,使用 Python 的包管理工具 pip 即可:

pip install frida-dexdump

前提条件:

  1. 已安装 frida-tools(通常安装 frida-dexdump 时会自动安装)。
  2. 电脑上已配置好 Android ADB 工具,并能与手机正常连接 (adb devices)。
  3. 手机上运行着对应架构的 frida-server(例如:adb push frida-server /data/local/tmp/ && adb shell “chmod 755 /data/local/tmp/frida-server && /data/local/tmp/frida-server &”)。

三、基本用法

  1. 常用命令

最常见的用法是直接运行命令,它会列出所有正在运行的进程。

frida-dexdump

但这通常不是我们想要的,我们需要指定目标应用。

  1. 脱取指定应用的 Dex

使用 -U(连接到USB设备)和 -n(通过应用名称匹配)参数是最常用的方式。

语法:

frida-dexdump -U -n <包名>

示例:脱壳名为“某App”的应用,其包名为 com.example.app。

frida-dexdump -U -n com.example.app

执行后,工具会开始工作,并在当前终端目录下生成一个以 包名_时间戳 命名的文件夹(如 com.example.app_20230810_152321),里面存放着所有 dump 出来的 .dex 文件。

  1. 脱取前台应用

如果你不想手动输入包名,可以使用 -F 参数来直接针对当前前台应用进行操作,非常方便。

frida-dexdump -U -F
  1. 其他常用参数

参数 全称 说明
-U --usb 连接到 USB 设备(必须)
-n --name 通过进程名匹配(包名)
-F --front 匹配最前台的应用程序
-p --pid 通过进程 PID 附加
-f --file spawn 一个新的进程并附加(用于脱壳应用启动时的初始 Dex)
-d --debug 启用调试模式,输出更详细的信息
-h --help 显示帮助信息

重要参数 -f 的用法: 有些壳在应用启动初期就完成了加载,常规附加可能错过。这时可以用-f 参数让 Frida 启动应用并同时附加。

frida-dexdump -U -f com.example.app

执行此命令后,应用会被启动,并在启动过程中完成脱壳。注意:使用 -f 时,默认会 spawn 方式启动,可能会被某些反调试机制检测到。

四、实战流程与示例

假设我们要分析一个包名为 com.zhiliaoapp.musically的应用。

  1. 准备工作:
    · 手机通过 USB 连接电脑,打开 USB 调试。
    · 在电脑上执行 adb devices 确认设备已连接。
    · 在手机上运行 frida-server。
  2. 寻找目标:
    · 在手机上启动 TikTok App,使其处于前台。
    · 或者在电脑上执行 adb shell ps | grep musically 来确认进程是否存在及其 PID。
  3. 开始脱壳: 方法 A (通过包名):
    frida-dexdump -U -n com.zhiliaoapp.musically
    
    方法 B (通过前台应用):
    frida-dexdump -U -F
    
    方法 C (通过 PID): 首先查找 PID:adb shell pidof com.zhiliaoapp.musically,假设返回 12345。
    frida-dexdump -U -p 12345
    
  4. 等待完成: 命令行会输出类似如下信息:
    Found 3 Dex files.
    Dumping to com.zhiliaoapp.musically_20230810_154722
    [########################################] 3/3
    Dumped: classes.dex
    Dumped: classes2.dex
    Dumped: classes3.dex
    
    这表示成功找到了 3 个 Dex 文件并已导出。
  5. 分析结果: 在当前目录下找到生成的文件夹,里面就是脱出来的 Dex 文件。你可以使用以下工具进行分析:
    · jadx-gui:直接打开 .dex 文件查看反编译的 Java 代码。
    · GDA、AKPS:等其他反编译工具。
    · 如果脱出来的 Dex 被壳进行了进一步处理(混淆、压缩、加密),可能还需要其他修复手段才能被正确反编译。

五、常见问题与注意事项

  1. frida-server 未运行或版本不匹配:
    · 错误信息:Failed to enumerate processes: unable to connect to remote frida-server
    · 解决:确保手机上的 frida-server 正在运行,并且其版本与电脑上安装的 frida 和 frida-dexdump 版本一致。使用 frida --version 和手机运行 frida-server --version 检查。
  2. 没找到 Dex 文件 / 脱壳失败:
    · 一些强壳会有反调试、反注入、内存混淆等机制,可能会检测到 Frida 或干扰内存扫描,导致 frida-dexdump 无法正常工作。
    · 解决:尝试使用不同版本的 Frida,或者使用其他抗检测的 Frida 脚本(如 objection 的 android anti-root-disable)。在某些极端情况下,可能需要使用更底层的、定制化的脱壳机。
  3. 脱出来的 Dex 无法反编译:
    · 这说明壳的保护机制生效了。它可能对 Dex 文件进行了加密、混淆或自定义打包,内存中的镜像并非标准格式。frida-dexdump 只是将内存块原样导出。
    · 解决:这属于更深层次的脱壳和修复问题,超出了基础工具的范围,需要手动分析或使用其他高级工具(如 DumpDex,Zjdroid,或者自己写 Frida 脚本定位和修复)。
  4. 权限问题:
    · 确保手机已获得 Root 权限,因为 frida-server 需要以 root 身份运行,并且扫描其他进程的内存也需要高权限。

总之,frida-dexdump 是入门安卓脱壳的首选神器,简单易用且效果显著。但对于越来越强的加固方案,可能需要更深入的技术才能成功脱壳。

http://www.xdnf.cn/news/1392805.html

相关文章:

  • 动态规划--Day03--打家劫舍--198. 打家劫舍,213. 打家劫舍 II,2320. 统计放置房子的方式数
  • 机器人视觉检测
  • 151.翻转字符串里的单词(字符串算法)
  • 昇腾算力加持,深度思考模型Colossal-R1上线魔乐社区
  • 多智能体框架(下)
  • 嵌入式Linux驱动开发 - 蜂鸣器驱动
  • 【前端教程】JavaScript 数组对象遍历与数据展示实战
  • 微功耗遥测终端机在城市管网压力/流量监测中的应用
  • 打造企业内部的“技术桥梁”:超级用户机制如何助力制造企业高效运维
  • 【数据分享】省级人工智能发展水平综合指标体系(2011-2022)
  • 【LeetCode】动态规划——72.编辑距离、10.正则表达式匹配
  • ros2---位姿转换--eigen/tf2
  • 如何在mysql中执行创建数据库的脚本文件?
  • 企业级数据库管理实战(三):数据库性能监控与调优的实战方法
  • 学习笔记-Record类
  • 忆联参与制定消费级SSD团体标准正式出版! 以“高可靠”引领行业提质增效与用户体验升级
  • 联想打印机2268w安装
  • Ubuntu22.04系统安装Opencv,无法定位包libjasper-dev libdc1394-22-dev的解决办法
  • 微信小程序调用蓝牙打印机教程(TSPL命令)
  • 死锁检测 及其测试用例
  • 地铁隧道病害智能巡检系统——机器视觉技术的深度应用
  • Idea2025.2 MybatisX插件失效问题
  • vue3+wangEditor实现富文本编辑器
  • cursor的setting設置換行
  • 命令拓展(草稿)
  • Vue开发准备
  • Silvaco TCAD | Victory DoE的基本使用方法(三)
  • nacos单机部署并开启鉴权
  • 2025.8.29机械臂实战项目
  • Windows 下 MSYS2 + MinGW-w64 配置 Fyne GUI 编译环境全流程