Skip to content

jsbxyyx/mjar-java

Repository files navigation

mjar-java

中文 English

mjar-javamjar 的 Java 侧配套项目,主要用于对 JAR / WAR 中的 class 文件进行加密与字节码修改,并通过 libmjar 原生库完成实际加密。

本项目需要配合 mjar 一起使用。
加密无法提供绝对安全,但可以显著提高静态分析和逆向工程的成本。

使用教程

构建

确保本地已安装 JDK 8+ 与 Maven。

mvn clean package

构建完成后生成可执行 jar。

加密 JAR / WAR(Mjarencrypt4)

当前主要使用 Mjarencrypt4,用于处理 JAR、WAR 及其内部嵌套归档。

命令:

java -jar mjar.jar <pkg_prefix> <source_jar_or_war> [DEBUG]

参数说明:

  • pkg_prefix:包前缀,使用点分形式,例如 com.github.jsbxyyx
  • source_jar_or_war:待处理的 JAR 或 WAR 文件路径
  • DEBUG:可选,开启调试输出

输出文件名规则:

  • app.jar -> app-enc.jar
  • app.war -> app-enc.war

示例:

java -jar mjar.jar com.github.jsbxyyx app.jar

处理完成后会生成加密后的产物,可配合 mjar 原生 Agent 在运行时解密加载。

控制台输出说明

处理过程中会输出树状结构,示例:

Processing: app.jar
/
├── [A] BOOT-INF/lib/...
├── [C] com/github/jsbxyyx/service/MyService.class [E][P]
...
>>> Encryption Complete: /path/to/app-enc.jar

标记含义:

  • [A]:archive,表示嵌套 JAR/WAR
  • [C]:class 文件
  • [E]:该 class 会被加密
  • [P]:该 class 会被打补丁

使用注意

  • 本项目需要配合 mjar 一起使用
  • 建议仅对核心业务包进行加密,避免影响第三方依赖
  • 某些依赖反射或运行时字节码增强的框架,可能需要排除部分 class
  • 加密无法提供绝对安全,但可以显著提高静态分析和逆向工程成本

许可证

如仓库中存在 LICENSE 文件,请以该文件为准。

相关项目

  • mjar —— 原生加密与运行时加载的主项目。

About

Encrypt Java classes inside JAR/WAR with ASM bytecode transformation, to be used together with the native mjar agent for runtime decryption. Support Spring Boot fat jars and nested archives. 使用 ASM 对 JAR/WAR 中指定包下的 class 进行加密和字节码补丁,配合 mjar 原生 Agent 在运行时解密加载,支持 Spring Boot fat jar 和嵌套包。

Topics

Resources

License

Stars

8 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages