主流开源免费 APK 加固工具

12 阅读3分钟

一、主流开源免费 APK 加固工具(按推荐度排序)

1. dpt-shell(DEX 抽取壳,最推荐)

  • 项目地址github.com/luoyesiqiu/…
  • 核心能力:DEX 方法代码抽取、内存动态回填、防静态反编译
  • 支持:Android 5.0+(API 21+)、多 dex
  • 协议:MIT(完全免费商用)

2. Jiagu(轻量加壳,无需登录)

  • 项目地址github.com/Frezrik/Jia…
  • 核心能力:不落地加载 DEX、基础加壳、防二次打包
  • 支持:Android 5.0+
  • 协议:开源免费

3. Obfuscapk(APK 级混淆,补充加固)

  • 项目地址github.com/ClaudiuGeor…
  • 核心能力:类名 / 方法名 / 字符串混淆、指令替换、防静态分析
  • 支持:全 Android 版本
  • 协议:GPLv3

4. AndResGuard(资源混淆,微信开源)

  • 项目地址github.com/shwenzhang/…
  • 核心能力:资源路径 / 文件名混淆、压缩、签名一体化
  • 定位:资源保护,非代码加壳
  • 协议:Apache 2.0

二、工具安装与使用教程(按工具)

🔧 工具 1:dpt-shell(DEX 抽取壳)

1. 安装(2 种方式)

方式 A:下载预编译包(推荐)

  1. 前往 Releases:github.com/luoyesiqiu/…
  2. 下载最新版 executable.zip
  3. 解压到任意目录(如 D:\tools\dpt-shell

方式 B:手动编译(需 JDK+Gradle)

bash

运行

# 克隆(含子模块)
git clone --recursive https://github.com/luoyesiqiu/dpt-shell.git
cd dpt-shell
# 编译
./gradlew assemble
# 进入输出目录
cd executable

2. 使用(命令行)

bash

运行

# 基础加固(自动签名)
java -jar dpt.jar -f 你的APK路径/app.apk

# 输出加固后APK:app_protected.apk(同目录)

#(仅加固,不签名)
java -jar dpt.jar -f app-release.apk -o 输出路径 -x

# 若加固后 APP 打不开,添加`--disable-acf`参数重试
java -jar dpt.jar -f 原始APK路径 -o 输出目录 -x --disable-acf

3. 验证

  • 安装 app_protected.apk,功能正常即成功
  • 用 Apktool 反编译,DEX 中方法体为空,说明加固生效

🔧 工具 2:Jiagu(轻量加壳)

1. 安装

bash

运行

# 克隆
git clone https://github.com/Frezrik/Jiagu.git
cd Jiagu

# Windows:编译生成工具
Jiagu_build.bat

# Linux/Mac:编译生成工具
chmod +x Jiagu_build.sh
./Jiagu_build.sh

编译后生成 JiaguTool 目录(含加固工具)

2. 使用

  1. 将待加固 APK 放入 input 文件夹
  2. 执行加固脚本:

bash

运行

# Windows
Jiagu_input.bat

# Linux/Mac
chmod +x Jiagu_input.sh
./Jiagu_input.sh
  1. 加固后 APK 在 output 目录

🔧 工具 3:Obfuscapk(APK 混淆)

1. 安装(需 Python 3.7+)

bash

运行

# 安装依赖
pip install obfuscapk

# 或从源码安装
git clone https://github.com/ClaudiuGeorgiu/Obfuscapk.git
cd Obfuscapk
pip install .

2. 使用

bash

运行

# 基础混淆(自动签名)
obfuscapk -o 混淆后.apk -d 原始.apk

# 常用混淆策略
obfuscapk -o secure.apk -d app.apk --obfuscation-strings --obfuscation-classes --obfuscation-methods

🔧 工具 4:AndResGuard(资源混淆)

1. 安装(Android Studio 集成)

app/build.gradle 添加:

gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.21'
    }
}

apply plugin: 'AndResGuard'

andResGuard {
    use7zip = true
    useSign = true
    keepRoot = false
    fixedResName = "arg"
    mergeDuplicatedRes = true
    whiteList = [
        "R.drawable.icon",
        "R.string.app_name"
    ]
}

2. 使用

bash

运行

# 执行资源混淆
./gradlew resguardRelease

输出:app/build/outputs/apk/release/app-release_aligned_signed.apk


三、加固完整流程(通用)

  1. 原始 APK → 编译生成(已签名)
  2. 加固 → 用 dpt-shell/Jiagu/Obfuscapk 处理
  3. 二次签名 → 加固后必须重新签名(V1+V2)
  4. 测试 → 安装运行,功能正常 + 反编译难度提升

四、常见问题

  1. 加固后安装失败

    • 必须重新签名(V2 签名)
    • 检查 APK 路径无中文 / 空格
  2. 加固后闪退

    • 部分 SDK / 反射代码不兼容,需加白名单
    • 降低加固强度(如 dpt-shell 关闭部分抽取)
  3. 反编译仍可见代码

    • 开源工具仅防基础逆向,需配合 ProGuard/R8 混淆
    • 核心逻辑建议用 JNI/NDK 实现

五、工具对比(快速选择)

表格

工具类型难度适合场景
dpt-shellDEX 抽取壳防静态反编译、核心代码保护
Jiagu轻量加壳快速基础加固、个人项目
ObfuscapkAPK 混淆补充混淆、增加逆向成本
AndResGuard资源混淆资源保护、减小体积