Java Class密码保护
面向 Java 交付物的加密保护

JAVA BYTECODE PROTECTION

让 Java 可运行,
让字节码不再裸奔。

为 .class 与 .jar 提供在线加密封装。每位用户独立设置加密口令,可选择部署时注入口令,或由专属 DLL / SO 在进程内提供密钥。

  • AES256-GCM
  • PBKDF2密钥派生
  • AGENT跨平台运行
protection-session● SECURE
JAR
service-app.jar28.4 MB · 1,248 classes
READY
01
读取构件
02
加密字节码
03
封装运行时
OUTPUTservice-app-protected.zip
ENCRYPTED
$java -javaagent:runtime/classguard-agent.jar -jar app.jar

BUILT FOR DELIVERY

不是压缩加密,
是运行时字节码保护。

只对 Java 字节码进行加密,资源文件与清单结构继续保留。运行时由 Agent 在类加载阶段完成解密,不产生落地明文 Class。

02

一人一密

多用户任务相互隔离,每次保护均由用户自己的口令派生密钥。

03
WINLINUXMAC

随包运行

下载包内附 Java Agent 与清晰的启动说明,无需改动应用业务代码。

THREE STEPS

从上传到运行,
只有三步。

选择构件、设置口令、下载保护包。口令运行和 DLL / SO 本地加载的部署步骤不同,请按所选模式操作。

  1. 01
    上传构件

    支持批量上传 .class 或 .jar;单个最大 100 MiB,总计 300 MiB。

    CLASS / JAR
  2. 02
    设置加密口令

    至少 8 位;同一用户也可以为不同项目设置不同口令。

    YOUR SECRET
  3. 03
    携 Agent 启动

    口令模式设置环境变量;本地模式先编译 DLL / SO,再进入 delivery 目录启动。

    RUN SECURELY

RUN THE BUNDLE

选择与你的保护模式匹配的命令

以下以可执行 JAR 为例;将文件名替换为实际生成的名称,单独的 .class 请以保护包内 README.txt 为准。

Windows PowerShell · 口令运行
$env:CLASSGUARD_PASSWORD='你的加密口令'
java -javaagent:runtime/classguard-agent.jar -jar "protected/app-protected.jar"
Remove-Item Env:CLASSGUARD_PASSWORD

从解压后的保护包根目录开始执行。DLL / SO 构建方需要完整 JDK、JAVA_HOME 与 GCC;只交付生成的 delivery 目录,不要交付包含密钥材料的 native-builder。

ACCESS CONSOLE

● 加密口令不会作为账号信息保存

FAQ

开始前,
你可能想知道。

加密后的 JAR 怎样运行?+

先解压保护包。口令模式设置 CLASSGUARD_PASSWORD 后通过 Java Agent 启动,运行结束后清除该环境变量;本地模式由保护包所有者先构建专属 DLL / SO,再进入 delivery 目录执行 README 给出的命令。每个保护包都有准确的文件名和启动参数,请优先查看包内 README.txt。

Windows 如何安装编译 DLL 所需的 GCC?+

可从 MSYS2 官网安装 MSYS2,在 UCRT64 终端运行 pacman -S mingw-w64-ucrt-x86_64-gcc。随后让 PowerShell 的 PATH 包含 UCRT64 的 bin 目录(默认 C:\msys64\ucrt64\bin),运行 gcc -dumpmachine 确认是 x86_64。还需安装完整的 Windows JDK,将 JAVA_HOME 指向 JDK 根目录,确认其下存在 include\jni.h,再运行 .\native-builder\build-windows.cmd。不要使用 MSYS 环境的 Cygwin GCC 或 32 位 GCC。

Linux 如何安装 GCC 并编译 SO?+

Ubuntu / Debian 可运行 sudo apt update 和 sudo apt install gcc(参见 Ubuntu 官方说明);其他发行版使用自己的包管理器安装 GCC。另需安装完整 JDK,设置 JAVA_HOME 指向 JDK 根目录,确认 $JAVA_HOME/include/jni.h 存在,再从保护包根目录运行 sh native-builder/build-linux.sh。本地库应在与部署目标相同的操作系统和 CPU 架构上构建。

需要安装 GCC 才能使用口令模式吗?+

不需要。口令模式只需与应用兼容的 Java 运行环境及包内 Agent。当前 DLL / SO 构建脚本只覆盖 Windows 和 Linux;macOS 可使用口令模式。

批量上传或单个 .class 有什么区别?+

批量上传会得到多个相互独立的保护包,请分别解压和运行。单个 .class 使用 -cp protected 和类的完整名称启动,不使用 -jar;准确命令见该包内的 README.txt。

原 JAR 的数字签名还有效吗?+

无效。字节码加密会改变 JAR 内容,保护过程会移除原签名文件和清单中的摘要。若交付流程要求签名,请在保护完成后对最终产物重新评估签名与验证方案。

服务器会保存我的加密口令吗?+

不会写入数据库或任务记录。口令模式不把口令装入保护包;本地模式会生成含专属密钥材料的构建源码,请勿将 native-builder 提供给部署方。

加密后是否绝对无法反编译?+

没有客户端运行方案能承诺绝对不可破解。本工具提高静态提取和直接反编译的成本,但运行环境仍应配合授权、混淆和服务器端校验。

Spring Boot JAR 可以使用吗?+

可以。保护包会保留 JAR 的资源和清单结构,仍使用 -jar 启动,只需增加 -javaagent 参数。