StaR4y/native-obfuscator-gui

GitHub: StaR4y/native-obfuscator-gui

JavaFX 桌面工具,通过将 Java 字节码转换为原生 C++ 代码并编译嵌入 JAR 来增强应用抵御反编译的能力。

Stars: 7 | Forks: 1

# Native Obfuscator GUI

Native Obfuscator GUI logo

## 项目概述 Native Obfuscator GUI 是一款用于 Java 应用保护工作流的 JavaFX 桌面应用程序。它基于 Native Obfuscator 转换引擎,将选定的 Java 字节码转换为生成的 C++ 原生代码,随后生成一个可与原生组件打包和执行的输出 JAR。 该项目保留了原始的命令行界面,同时为日常使用添加了图形化工作流。用户可以选择或拖拽输入文件、配置处理范围、选择目标平台、实时监控控制台输出,并获得清晰的转换状态反馈。UI 采用简洁的白色和灰色视觉风格,默认语言为英文。 除了基本转换功能外,该 GUI 还包含一个原生构建流水线。在生成 C++ 源码后,它可以调用 CMake 和 Ninja 来编译原生动态库,并可选择将该库嵌入到输出 JAR 中。在 Windows x64 平台上,如果缺少 CMake、Ninja 或 C++ 工具链组件,系统会自动将它们下载到本地工具目录中。 本项目适用于 Java 桌面应用程序、服务端组件,以及其他需要更强抵抗静态检查和逆向工程能力的 Java 项目。它同时支持交互式 GUI 使用和可脚本化的 CLI 使用。 ## 技术栈 - Java 8 源代码/目标兼容性 - JavaFX 17 - Gradle Wrapper - Shadow Jar - ASM 9.8 - Picocli - SLF4J + Log4j2 - CMake + Ninja - w64devkit 作为 Windows x64 上默认自动下载的 C++ 工具链 ## 环境要求 - 建议使用 JDK 17 或更高版本来构建和运行本项目。 - Java 部分可以在 Windows、macOS 和 Linux 上构建。 - CMake、Ninja 和 w64devkit 的自动下载目前仅支持 Windows x64。 - 对于非 Windows x64 环境下的原生自动编译,请手动安装以下工具: - CMake - Ninja - C++ 编译器,例如 `g++`、`clang++` 或 MSVC `cl` ## 快速开始 ``` .\gradlew.bat :obfuscator:assemble -PjavafxPlatform=win ``` 支持的平台分类器示例: ## GUI 使用说明 1. 选择或拖拽输入 JAR。 2. 选择输出目录。该目录不应与输入 JAR 所在目录相同。 3. 可选择是否指定库目录、黑名单文件和白名单文件。 4. 在 `Platform` 中选择目标平台。 5. 如有需要,请启用注解处理或调试 JAR 输出。 6. 在 `Native` 选项卡中配置原生构建选项。 7. 点击 `Run` 开始转换。UI 将自动切换到控制台选项卡。 ### 原生构建选项 - `Plain Lib`:设置 LoaderPlain 使用的原始库名称。 - `Native Dir`:设置 LoaderUnpack 使用的原生目录。 - `Tools Dir`:本地工具目录。默认为用户主目录下的 `.native-obfuscator/tools`。 - `Auto compile`:在转换后编译生成的 C++ 源码。 - `Embed in JAR`:将编译后的动态库插入到输出 JAR 中。 - `Auto download tools`:下载缺失的 CMake、Ninja 或 Windows C++ 工具链组件。 - `Build Type`:选择 `Release` 或 `Debug`。 当启用 `Embed in JAR` 时,请勿设置 `Plain Lib`。嵌入操作需要 LoaderUnpack。 ## 命令行使用说明 GUI 是默认的入口点。要使用原始 CLI,请显式指定 CLI 主类: ``` java -cp obfuscator/build/libs/obfuscator.jar by.radioegor146.Main [options] ``` 常用选项: ``` -l, --libraries Directory containing dependency libraries -b, --black-list File containing blacklist rules -w, --white-list File containing whitelist rules --plain-lib-name Library name used by LoaderPlain --custom-lib-dir Native directory used by LoaderUnpack -p, --platform hotspot, std_java, or android -a, --annotations Enable annotation rules --debug Generate debug.jar ``` 示例: ``` java -cp obfuscator/build/libs/obfuscator.jar by.radioegor146.Main app.jar out -l libs -p hotspot -a ``` ## 项目结构 ``` . |-- annotations/ Native Obfuscator annotation module |-- obfuscator/ Core converter, CLI, JavaFX GUI, and native build pipeline |-- gradle/ Gradle Wrapper files |-- build.gradle Root Gradle configuration `-- settings.gradle Gradle subproject declaration ``` 核心包: ``` by.radioegor146 Core converter and CLI by.radioegor146.gui JavaFX GUI by.radioegor146.gui.build Native auto-compilation, toolchain resolution, and JAR embedding ``` ## 测试 运行混淆器模块测试: ``` .\gradlew.bat :obfuscator:test ``` 部分集成测试依赖于外部的 CMake/工具链环境。当缺少必需的环境时,这些测试将被跳过,而基本的单元测试仍能通过。 ## 许可证 本项目采用 GPL-3.0 授权。详情请参阅 `LICENSE`。
标签:Bash脚本, C++代码生成, JavaFX, Java开发, JS文件枚举, SOC Prime, 代码保护, 代码混淆, 后台面板检测, 域名枚举, 字节码操作, 开发工具, 蓝队工具