littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于 Java 和 C 的 Android Dex 加固系统

项目简介

本项目致力于对 Android 的 Dex 文件进行加固。借助基于 dex - vm 运行 Dalvik 字节码,把 Dex 里的数据转化为 C 结构体,同时对 opcode 做随机化处理,以此提升反编译的难度,保障 Android 应用的代码安全。项目主要由两部分构成:nmm - protect 是纯 Java 项目,负责对 Dex 进行转换并生成 NDK 项目;nmmvm 是一个 Android 项目,涵盖 dex - vm 的具体实现以及各类 Dalvik 指令的测试。

项目的主要特性和功能

  1. Dex 转换:nmm - protect 项目可将 Dex 文件中的数据转换为 C 结构体,加大代码反编译的难度。
  2. Opcode 随机化:对 Opcode 进行随机化处理,进一步增加反编译的难度。
  3. 生成加固后的 APK:经 nmm - protect 处理后,生成加固后的 APK 文件。
  4. Dex 虚拟机实现:nmmvm 项目实现了一个 Dex 虚拟机,能通过自定义参数实现不同的加固方式。
  5. 支持规则配置:可以配置需要转换的类和方法规则。

安装使用步骤

直接使用生成的 JAR 文件

  1. 确保已经安装好 JDK、Android SDK 和 NDK,并配置好环境变量 ANDROID_SDK_HOMEANDROID_NDK_HOMECMAKE_PATH 可选: bash export ANDROID_SDK_HOME=/opt/android-sdk export ANDROID_NDK_HOME=/opt/android-sdk/ndk/22.1.7171670 export CMAKE_PATH=/opt/android-sdk/cmake/3.18.1/
  2. 运行 JAR 文件: bash java -jar nmm - protect - xxx.jar input.apk
  3. 执行完毕后,会在 input.apk 所在的目录下生成一个 build 目录,里面包含最后输出的 APK(build/input - protect.apk)、完整的 C 项目 dex2c(基于 CMake)及处理过程中生成的 .dex 等。
  4. 第一次运行后会在 JAR 位置生成 tools 目录,里面有 config.json,可以编辑它配置 Android SDK、NDK 相关路径。
  5. 对生成的 APK 进行对齐和签名: bash zipalign 4 build/input - protect.apk build/input - protect - align.apk apksigner sign --ks ~/.myapp.jks build/input - protect - align.apk

下载及编译项目

  1. 复制项目: bash cd nmmp/nmm - protect
  2. 编译项目: bash ./gradlew arsc:build ./gradlew build
  3. 成功后会在 build/libs 生成可直接执行的 fatjar。

配置转换规则

无转换规则文件时,会转换 Dex 里所有类的方法(除构造方法和静态初始化方法)。规则只支持一些简单情况,示例如下: java class * extends android.app.Activity class * implements java.io.Serializable class my.package.AClass class my.package.* { *; } class * extends java.util.ArrayList { if*; }

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】