返回更新列表
新发布Sep 10, 2026

jadx-magic-strings v1.0.3-dev

一款 JADX 插件,可从 DEX 文件和反编译的 Android 代码中的字符串常量里提取方法名、类引用和源文件路径。

分享

JADX Magic Strings 插件

一个从字符串常量中提取信息的 JADX 插件。

功能

该插件从反编译代码中提取并分析字符串常量,以发现:

  1. 源文件引用:检测字符串常量中对 Java/Kotlin 源文件(.java.kt.kts.scala.groovy)的引用
  2. 方法名候选:使用正则表达式模式从字符串中识别潜在的方法名
  3. 字符串分析:收集所有字符串常量及其关联的方法和类

安装

选项 1:从 GitHub 安装(推荐)

如果此插件已发布到 GitHub,你可以直接安装:

jadx plugins --install "github:0rshemesh:jadx-magic-strings"

选项 2:从源码构建并安装

  1. 克隆仓库

    git clone https://github.com/0rshemesh/jadx-magic-strings.git
    cd jadx-magic-strings
    
  2. 构建插件

    ./gradlew build
    
  3. 安装插件

    jadx plugins --install-jar build/libs/jadx-magic-strings-1.0.1.jar
    

    或者手动将 JAR 复制到 JADX 插件目录:

    • Linux/Mac~/.local/share/jadx/plugins/dropins/
    • Windows%APPDATA%\jadx\plugins\dropins\

构建插件

插件可以独立构建:

./gradlew build

插件 JAR 将生成于:

build/libs/jadx-magic-strings-1.0.1.jar

要求:

  • Java 11 或更高版本
  • Gradle(或使用随附的 Gradle wrapper:./gradlew

使用方法

在 JADX GUI 中

  1. 安装插件(参见上方「安装」部分)

  2. 运行 JADX GUI

    jadx-gui
    
  3. 在 JADX GUI 中打开你的 APK/DEX 文件

  4. 等待反编译完成(插件会在反编译后自动运行)

  5. 访问插件

    • 在菜单栏中转到**「插件」(Plugins)**菜单
    • 点击 "Magic Strings: Show Results"
    • 将打开一个包含多个选项卡的对话框窗口:
      • 源文件(Source Files):树状视图,显示检测到的源文件路径及其引用
      • 顶级候选 + 源文件(Top Candidates + Source Files):按源文件分组的高分方法候选组合视图
      • 方法候选(已过滤)(Method Candidates (Filtered)):表格,显示过滤后的方法名候选
      • 全部字符串(All Strings):表格,显示所有提取的字符串常量

Magic Strings 插件示例

在 JADX CLI 中

插件会在反编译期间自动运行,但没有用于查看结果的 CLI 界面。请使用 GUI 查看提取的信息。

工作原理

  1. 反编译完成后,插件会扫描所有类中的所有方法
  2. 提取字符串常量:从指令节点(CONST_STR 指令)中提取
  3. 分析字符串,使用以下正则表达式模式:
    • 源文件:匹配以 .java.kt 等结尾的文件路径
    • 方法名:匹配类似方法名的驼峰式命名模式
  4. 将结果存储到可通过 GUI 访问的数据结构中

示例用例

  • 逆向工程:查找可能揭示项目结构的原始源文件名
  • 反混淆:从调试字符串或错误消息中识别方法名
  • 代码分析:理解字符串与方法之间的关系
  • 恶意软件分析:提取可能指示功能的有趣字符串

局限性

  • 插件仅在反编译完成后才会运行
  • 字符串提取取决于被反编译的代码(某些混淆代码可能没有可访问的字符串)
  • 方法名检测使用启发式规则,可能产生误报
  • 源文件检测依赖于包含文件路径的字符串(并非始终存在)

故障排查

插件未出现在菜单中:

  • 确保插件已正确安装
  • 检查插件 JAR 是否在插件目录中
  • 验证服务文件是否存在:META-INF/services/jadx.api.plugins.JadxPlugin
  • 确保你使用的是兼容的 JADX 版本(1.5.2 及以上)

未显示结果:

  • 代码可能不包含相关字符串
  • 尝试反编译其他 APK/DEX 文件
  • 某些混淆代码可能没有可提取的字符串

构建错误:

  • 确保你使用的是 Java 11 或更高版本
  • 运行 ./gradlew clean build 重新构建所有内容
  • 检查 build.gradle.kts 中的 JADX 版本是否与 Maven Central 上可用的版本匹配

作者

0rshemesh 创建并维护。

许可证

本插件采用 Apache License 2.0 许可证。详情请参阅 LICENSE 文件。

分类