项目简介
本项目致力于对 Android 的 Dex 文件进行加固。借助基于 dex - vm 运行 Dalvik 字节码,把 Dex 里的数据转化为 C 结构体,同时对 opcode 做随机化处理,以此提升反编译的难度,保障 Android 应用的代码安全。项目主要由两部分构成:nmm - protect 是纯 Java 项目,负责对 Dex 进行转换并生成 NDK 项目;nmmvm 是一个 Android 项目,涵盖 dex - vm 的具体实现以及各类 Dalvik 指令的测试。
项目的主要特性和功能
- Dex 转换:nmm - protect 项目可将 Dex 文件中的数据转换为 C 结构体,加大代码反编译的难度。
- Opcode 随机化:对 Opcode 进行随机化处理,进一步增加反编译的难度。
- 生成加固后的 APK:经 nmm - protect 处理后,生成加固后的 APK 文件。
- Dex 虚拟机实现:nmmvm 项目实现了一个 Dex 虚拟机,能通过自定义参数实现不同的加固方式。
- 支持规则配置:可以配置需要转换的类和方法规则。
安装使用步骤
直接使用生成的 JAR 文件
- 确保已经安装好 JDK、Android SDK 和 NDK,并配置好环境变量
ANDROID_SDK_HOME
、ANDROID_NDK_HOME
,CMAKE_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/
- 运行 JAR 文件:
bash java -jar nmm - protect - xxx.jar input.apk
- 执行完毕后,会在
input.apk
所在的目录下生成一个build
目录,里面包含最后输出的 APK(build/input - protect.apk
)、完整的 C 项目dex2c
(基于 CMake)及处理过程中生成的.dex
等。 - 第一次运行后会在 JAR 位置生成
tools
目录,里面有config.json
,可以编辑它配置 Android SDK、NDK 相关路径。 - 对生成的 APK 进行对齐和签名:
bash zipalign 4 build/input - protect.apk build/input - protect - align.apk apksigner sign --ks ~/.myapp.jks build/input - protect - align.apk
下载及编译项目
- 复制项目:
bash cd nmmp/nmm - protect
- 编译项目:
bash ./gradlew arsc:build ./gradlew build
- 成功后会在
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】