jsbxyyx/mjar-java
GitHub: jsbxyyx/mjar-java
mjar-java是一个通过字节码加密和运行时解密来保护Java应用程序免受逆向工程的安全工具。
Stars: 5 | Forks: 1
# mjar-java
中文 [English](README_en.md)
`mjar-java` 是 [mjar](https://github.com/jsbxyyx/mjar) 的 Java 侧配套项目,主要用于对 JAR / WAR 中的 class 文件进行加密与字节码修改,并通过 `libmjar` 原生库完成实际加密。
## 使用教程
### 构建
确保本地已安装 JDK 8+ 与 Maven。
mvn clean package
构建完成后生成可执行 jar。
### 加密 JAR / WAR(Mjarencrypt4)
当前主要使用 `Mjarencrypt4`,用于处理 JAR、WAR 及其内部嵌套归档。
命令:
java -jar mjar.jar [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](https://github.com/jsbxyyx/mjar) 一起使用
- 建议仅对核心业务包进行加密,避免影响第三方依赖
- 某些依赖反射或运行时字节码增强的框架,可能需要排除部分 class
- 加密无法提供绝对安全,但可以显著提高静态分析和逆向工程成本
## 许可证
如仓库中存在 [LICENSE](LICENSE) 文件,请以该文件为准。
## 相关项目
- [mjar](https://github.com/jsbxyyx/mjar) —— 原生加密与运行时加载的主项目。
标签:ASM字节码操作, GHAS, JAR加密, Java安全, JS文件枚举, Maven项目, Spring Boot支持, WAR加密, 代码保护, 原生代理, 反逆向工程, 域名枚举, 字节码加密, 字节码补丁, 嵌套归档, 类文件加密, 软件加固, 运行时解密, 静态分析防御