Featured image of post Android 工具链实战:Jadx 反编译 / JD-GUI / Auto.js / Nox 模拟器

Android 工具链实战:Jadx 反编译 / JD-GUI / Auto.js / Nox 模拟器

Windows 平台 Android 逆向与自动化工具:Jadx 反编译 APK、JD-GUI 看 class、Auto.js 写脚本、Nox 夜神模拟器、Fiddler+nox 抓包

一、Android 工具链的"开发 + 逆向"双面

2016 年的 Android 工具链呈"两极分化"——开发向 走 Android Studio / Gradle,逆向向走 Smali / APK 反编译 / Hook;自动化向走 Auto.js / UIAutomator;调试向走模拟器 / 真机 + Fiddler 抓包。本文整理 4 款逆向 / 自动化专用工具。

阅读建议:本文面向Android 安全研究员 / 移动测试工程师 / 自动化玩家仅讨论开源 / 免费 / 公开技术不涉及任何非法破解

二、Jadx:APK 反编译利器

2.1 定位

Jadx 2014 年开源,把 APK 里的 .dex 反编译成 .java优势

  • GUI + CLI
  • 反编译质量高比 d2j-dex2jar + jd-gui 强
  • 支持资源和 AndroidManifest.xml
  • 免费开源Apache 2.0

2.2 安装

  • GitHubhttps://github.com/skylot/jadx/releases
  • 平台:Windows / macOS / Linux
  • 解压即用无安装

2.3 GUI 使用

1
2
# 启动
bin/jadx-gui.bat
  1. File → Open → 选 APK
  2. 左侧树:包名 / 类名 / 资源
  3. 中间:Decompiled code 视图
  4. 顶部:搜索类 / 方法 / 字段

实战找登录逻辑

1
2
3
4
5
6
7
8
9
搜索关键字:
- "password"
- "login"
- "api/"
- "https://"

常见加密识别:
- Base64 / AES / RSA / MD5
- 自定义算法(看类名含 Cipher/Encrypt/Hash)

2.4 命令行

1
2
3
4
5
6
7
8
# 完整反编译
bin/jadx --output-dir out app.apk

# 只反编译部分类
bin/jadx --output-dir out --show-bad-code app.apk

# 不导出资源
bin/jadx --output-dir out --no-res app.apk

2.5 高级选项

1
2
3
4
5
6
# 显示行号
--show-bad-code

# 调试信息
--export-gradle  # 导出 Gradle 项目
--no-imports     # 不自动 import

2.6 替代品

工具优势
Jadx开源 / 高质量
JEB最强反混淆商业付费
Bytecode Viewer多引擎(Krakatau / Procyon
APKTool资源 + Smali 反编译
d2j-dex2jar + jd-gui老牌组合(质量差

三、JD-GUI:Java class 查看器

3.1 定位

JD-GUI 2008 年发布,用 Java 写的小工具专门看 .class 文件的反编译源码比 Jadx 简单只支持 JAR/class,不支持 APK)。

3.2 安装

http://java-decompiler.github.io/

  • 跨平台 JAR 包
  • 启动:java -jar jd-gui.jar

3.3 实战

反编译 .class

  1. File → Open → 选 JAR / class
  2. 左侧:包结构
  3. 中间:反编译代码
  4. 可以搜索类 / 方法

实战:看 Spring AOP 生成的 class:

1
2
3
4
5
目标:理解 Spring 事务代理
1. 找到 service 类的 $$FastClassByCGLIB$$xxx 文件
2. 反编译看 invoke 方法
3. 看到 MethodInterceptor.invoke
4. 理解 AOP 链

3.4 替代品

工具优势
JD-GUI经典 / Java 写
CFR命令行 / 高质量
Procyon现代 Java 8+
JD-EclipseEclipse 插件
IntelliJ IDEA 内置内置(已足够用

3.5 CFR 命令行

1
2
3
4
5
6
7
8
# 反编译一个 class
java -jar cfr.jar MyClass.class

# 反编译整个 JAR
java -jar cfr.jar my-app.jar --outputdir out/

# Java 8 lambda
java -jar cfr.jar MyClass.class --usenametable false

四、Auto.js:Android 自动化脚本

4.1 定位

Auto.js 是 hyb1996 个人开发的 Android 自动化工具,用 JavaScript 写脚本2017 年停更作者被抓),但代码开源:hyb1996/Auto.js。有 6.0+ 商业继承者AutoX / AutoJs6 / Hamibot)。

4.2 优势

  • 用 JS 写门槛低
  • 完整 Android APIUI / 网络 / 文件 / 数据库
  • 无障碍服务模拟点击
  • OCR / 截图 / 录屏

4.3 安装与开发环境

  • GitHubhttps://github.com/hyb1996/Auto.jsv4 / 早期版本
  • Android 7+:装 APK
  • Pro 版(hyb1996 大神):有 VSCode 插件

4.4 第一个脚本:自动点赞

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// 点赞脚本
auto.waitFor();  // 等待无障碍服务开启

// 打开抖音
app.launchApp("抖音");
sleep(3000);

// 模拟点击第一个视频
click(540, 1000);
sleep(2000);

// 双击点赞
click(540, 1000);
sleep(100);
click(540, 1000);
toast("点赞完成!");

4.5 进阶:UI 自动化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 找特定控件
var button = text("登录").findOne(5000);
if (button) {
    button.click();
}

// 找带 className 的控件
var editText = className("EditText").findOne();
editText.setText("hello world");

// 滑动
swipe(500, 1500, 500, 500, 500);

4.6 OCR + 点击

1
2
3
4
5
6
7
8
9
// 调用 OCR API 识别文字
var ocrText = ocr.recognizeText(captureScreen());
toast(ocrText);

// 找文字位置
var pos = ocr.recognize(captureScreen(), ["登录"]);
if (pos) {
    click(pos[0].bounds.centerX(), pos[0].bounds.centerY());
}

4.7 实战:自动签到

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 早 9 点自动签到
auto.waitFor();
setInterval(() => {
    var now = new Date();
    if (now.getHours() === 9 && now.getMinutes() === 0) {
        app.launchApp("某 App");
        sleep(3000);
        var btn = text("签到").findOne(5000);
        if (btn) btn.click();
        toast("签到完成");
    }
}, 60000);

4.8 Auto.js 6(开源继承者)

https://github.com/aiselp/AutoX

  • 兼容 Auto.js v4 API
  • 持续维护
  • 装好后直接跑老脚本

五、Nox 夜神模拟器:Android 模拟器

5.1 定位

Nox 夜神模拟器 2015 年发布,国产最强 Android 模拟器比 BlueStacks / Andy 强:

  • 国产 / 中文
  • 支持 Android 5/7/9/12 多版本
  • 多开( 1 台 PC 开 5+ 模拟器**)**
  • Root 权限( 默认开启**)**
  • 游戏优化( 键位映射**)**

5.2 安装

https://www.yeshen.com/

  • 装好首次启动自动装虚拟设备
  • 需要开启 VT-xBIOS

5.3 关键设置

设置 → 高级

配置推荐
性能4 核 / 4 GB(看 CPU
分辨率1920×1080(默认
帧数60 FPS(游戏
Root开启(测试
ADB远程连接(默认 62001 端口

5.4 ADB 连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 列出设备
adb devices
# 127.0.0.1:62001 device

# 连接
adb connect 127.0.0.1:62001

# 安装 APK
adb install app.apk

# 进入 shell
adb shell

5.5 多开

  • 多开管理器 → 新建模拟器
  • 5 开:i5 + 16 GB 内存基本够用
  • i7 + 32 GB10 开

5.6 键位映射(游戏)

  • 右侧 键盘操控
  • 拖动按键到屏幕
  • WASD 等键
  • FPS 游戏必备

5.7 替代品对比

工具优势
Nox国产 / 中文 / 多开
BlueStacks老牌 / 国际版
LDPlayer轻量 / 雷电
MuMu 模拟器网易系 / 游戏优化
Android Studio AVD官方 / 慢
Genymotion商业 / 性能强
WSAWin 11 / Android 子系统

六、Fiddler + Nox 抓包

6.1 准备

  1. Nox 启动 + 装目标 App
  2. Fiddler 启动 + 设代理

6.2 Fiddler 配置

Tools → Options → Connections

  • Fiddler listens on port8888
  • Allow remote computers to connect勾选
  • Tools → Options → HTTPS
    • Capture HTTPS CONNECTs勾选
    • Decrypt HTTPS traffic勾选
    • ... from all processes勾选

6.3 Nox 代理配置

方法 1:Nox 设置 → Wi-Fi

  • 长按已连接 Wi-Fi → 修改网络
  • 代理:127.0.0.1:8888

方法 2:Root + adb 命令

1
2
3
4
5
6
7
8
# 推 Fiddler 证书到系统证书
adb push FiddlerRoot.cer /sdcard/
adb shell
su
mount -o rw,remount /system
cp /sdcard/FiddlerRoot.cer /system/etc/security/cacerts/
chmod 644 /system/etc/security/cacerts/FiddlerRoot.cer
reboot

方法 3:透明代理( App 不开代理**)**

postern / Drony 等 VPN 类工具。

6.4 抓包实战

  1. Nox 启动 App
  2. Fiddler 看 HTTP/HTTPS 请求
  3. 关注:URL、Header、Body、Response

典型抓包场景

  • 登录流程 → 看 token / cookie
  • 支付流程 → 看签名算法
  • 资源加载 → 找 CDN 域名

6.5 替代品

工具优势
Fiddler老牌 / 强大 / 需 root
Charles跨平台 / 简单
mitmproxy命令行 / 脚本化
Wireshark抓 TCP/UDP(无需代理
HttpCanaryAndroid 直接抓(无需 PC

七、组合实战

7.1 Android 应用安全审计

1
2
3
4
5
6
7
8
9
目标 APK
   ↓ Jadx 反编译
源码(Java)
   ↓ 静态分析
找硬编码密码 / API key / 加密算法
   ↓ 动态调试
Fiddler / mitmproxy 抓 HTTPS
   ↓ Frida / Xposed Hook
   ↓ 完整安全报告

7.2 自动化测试

1
2
3
4
5
6
7
8
9
Nox 多开(5 设备)
Airtest / Auto.js 脚本
执行登录、签到、点击等操作
Fiddler 抓包 + Logcat 看日志
性能 / 稳定性报告

7.3 移动爬虫

1
2
3
4
5
6
7
Auto.js 写脚本
   ↓ 模拟滑动 / 点击
Nox 跑模拟器
   ↓ 截图
Jadx 看协议
   ↓ Fiddler 抓 API
直接 HTTP 调 API

八、常见问题

8.1 Jadx 反编译失败

  • APK 加固(360 / 腾讯乐固 / 梆梆)→ 用 FDex2 / dumpDex 先脱壳
  • 混淆严重 → 用 JEB / GDA 替代
  • --show-bad-code 强制显示

8.2 Nox 卡顿

  • CPU 没开 VT:BIOS 开启
  • 显卡驱动升级
  • 关闭杀毒软件Hyper-V 冲突
  • 改用 Android 5 版本比 7 快

8.3 Fiddler 抓不到 HTTPS

  • 证书没装到系统证书:用上述方法 2
  • App 用了 SSL Pinning:需 JustTrustMe / SSLUnpinning Xposed 模块
  • App 用了双向认证:需要 App 客户端证书

8.4 Auto.js 脚本不执行

  • 无障碍服务没开
  • Android 版本不兼容v4 最高 9
  • 后台被杀 → 改用 ForegroundService

8.5 模拟器被检测

  • 物理 MAC 改写Nox 支持
  • IMEI 修改需 root + Xposed
  • 定位模拟Nox 自带
  • GPU 信息Nox 已优化

九、下一步

  • 想看抓包工具:[2016-11-15 数据库客户端实战:MySQL / Redis / ES / MQTT]
  • 想看 Fiddler 完整实战:[2018-09-15 Fiddler + Charles 抓包]
  • 想看 APK 自动化:App 自动化测试 章节

本文写于 2016 年,回看当时:Jadx 2014 开源,已取代老牌 d2j-dex2jar;Auto.js 作者 2017 被抓后社区分裂为多个 fork;Nox 至今仍是国产模拟器老大;这 4 款工具 10 年后仍是最常用的 Android 逆向 / 自动化组合

使用 Hugo 构建
主题 StackJimmy 设计