Android 代码逆向

逆向工具分析

在 Ubuntu 上有不少不错的软件/工具可以用来 反编译 ANDROID APK 并阅读反编译后的代码。具体优缺点如下


✅ 推荐工具

工具功能优点缺点
JADX(含 jadx-gui)将 APK/DEX 反编译成 Java 源 + 支持 GUI 浏览界面友好、支持全文搜索、跳转、代码高亮。很多逆向教程推荐。 CSDN博主+1对于混淆严重/内联严重的代码,反编译可能不完全;大包反编译时间会较长。
Apktool解包 APK,生成 smali 代码、资源、清单;适合深入修改或查看 smali/资源层级支持资源还原、smali 级别查看,逆向者常用。 apktool.org+1主要输出 smali,不是直接 Java;阅读体验稍差一些。
JD‑GUI用于查看 jar 包(dex2jar 转换后)里面的 Java 源操作简单、直观,是经典的 Java 源查看工具。 cnblogs.com+1先需要做 dex2jar 转换,流程稍多;对于最新 Android 特性可能支持弱。
JEB商业级反编译工具,支持 Dalvik/native 等更多类型功能强大、交互性好。 维基百科收费/授权限制;如果只做简单查看可能“过重”。

🔧 如何安装与快速使用(Ubuntu 环境)

安装示例

  • 安装 JADX

    # 假设你下载了 release 包
    wget https://github.com/skylot/jadx/releases/download/v<version>/jadx-<version>.zip
    unzip jadx-<version>.zip -d ~/tools/jadx
    export PATH=~/tools/jadx/bin:$PATH
  • 安装 Apktool:

    sudo apt update
    sudo apt install -y apktool

快速使用流程(阅读反编译代码):

  1. 用 JADX:

    jadx -d out_jadx path/to/app.apk

    然后打开 out_jadx 目录,用你喜欢的编辑器/IDE 阅读,或使用 jadx-gui path/to/app.apk 直接图形浏览

    GUI界面如图,支持类间跳转还是很好用的

  2. 如果没有找到你要的方法或者代码被混淆严重,用 Apktool:

    apktool d -f path/to/app.apk -o out_apktool

    然后在 out_apktool/smali/... 目录查找 .smali 文件。

JADX反编译常见问题

一、环境配置类问题:启动失败与依赖缺失

1.1 “Java版本过低”错误

症状:启动jadx-gui时弹出UnsupportedClassVersionError,或命令行执行jadx提示”requires Java 11+”。 解决方案:

检查当前Java版本:

java -version
  • 安装Java 11+(推荐Adoptium Temurin),配置环境变量后重启终端。
  • 验证安装:java -version输出应包含”11.0”或更高版本号。

1.2 图形界面无法启动(Linux/macOS)

症状:命令行执行jadx-gui无反应,或报”无法初始化GTK”错误。 解决方案:

安装图形界面依赖:

# Ubuntu/Debian
 
sudo apt install libxrender1 libxtst6 libxi6
 
# Fedora/RHEL
 
sudo dnf install libXrender libXtst libXi

使用纯命令行模式反编译:

jadx -d output_dir app.apk

二、反编译效果类问题:代码可读性优化 2.1 变量名混乱(如a/b/c/d) 症状:反编译后的代码充斥var1、f$0等无意义名称,难以理解逻辑。 解决方案:启用高级反混淆功能

在GUI中打开设置(File > Preferences) 勾选以下选项: Deobfuscation > 启用"Activate deobfuscation" Rename options > 设置"Minimum name length"为3 Kotlin metadata > 勾选"Rename function arguments" 命令行参数示例:

jadx --deobf --deobf-min 3 --use-kotlin-methods-for-var-names apply app.apk

文档参考

https://blog.csdn.net/gitblog_09467/article/details/151561643