# JavaProtect **Repository Path**: deeround/JavaProtect ## Basic Information - **Project Name**: JavaProtect - **Description**: JavaProtect是一款对jar包里面class文件进行加密的工具,对原始class文件内方法进行改写,避免反编译和破解,保护源代码。支持普通jar包和springboot打包的jar包的加密。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2023-11-14 - **Last Updated**: 2024-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, 反编译, JavaProtect, JAR加密, Class加密 ## README # 使用说明 ## 文件说明 直接查看release文件夹下文件,该文件夹下是发行版文件。 1、java-protect-tool.jar ​ 加密工具,对原始jar进行加密的工具,运行时不需要。 2、java-protect-agent.jar ​ 解密程序,运行时需要使用此程序对加密后的jar进行动态解密。 ​ ## 快速体验 1、双击encrypt.cmd生成加密后的jar包。 2、双击run.cmd运行加密后的jar包。 ## 加密 这里encrypt.cmd的内容 ``` cmd java -jar java-protect-tool.jar --from "sys-demo-1.0.0.jar" --p "JavaProtect" --inj "sys-*" --inc "com.gitee.deeround.demo.*" ``` 语法说明: ``` cmd java -jar java-protect-tool.jar --form 原始jar包 --to 加密后的jar包 --p 加密密钥 --c 版权信息 --inj 需要加密的jar包 --inc 需要加密的类 ``` 参数说明: **==参数值务必用双引号包裹起来==** | key | 是否必须 | 说明 | 备注 | | ---- | -------- | --------------- | ----------------------------------------------------- | | from | 是 | 原始jar包 | 相对路径或绝对路径 | | to | 否 | 加密后jar包 | 相对路径或绝对路径,为空时为encrypt-原始jar包.jar | | p | 是 | 加密密钥 | | | c | 否 | 版权信息 | | | inj | 是 | 包含的jar包条件 | 多个,隔开,其中*表示模糊匹配,指定哪些jar包才需要加密 | | inc | 是 | 包含的类条件 | 多个,隔开,其中*表示模糊匹配,指定哪些类才需要加密 | ## 解密(运行) 这里是run.cmd内容 ~~~ cmd // 方式一:直接传入AgentKey java -javaagent:java-protect-agent.jar=b538b01fa56aed256096f3f6383d0a5a9dc52278f7137ac651b7b2ccdc083d00602602ac3bc975073024115ed828e59cca57dd5a5139e6a06f666e9e7fba067f3b40005f459d7b74333aa978306132ae -jar encrypt-sys-demo-1.0.0.jar // 方式二:从环境变量获取或者protect.agent.key文件获取AgentKey java -javaagent:java-protect-agent.jar -jar encrypt-sys-demo-1.0.0.jar ~~~ 语法说明: ~~~ cmd // 方式一:直接传入AgentKey java -javaagent:java-protect-agent.jar=AgentKey -jar 加密后的jar包 // 方式二:从环境变量获取或者protect.agent.key文件获取AgentKey java -javaagent:java-protect-agent.jar -jar 加密后的jar包 ~~~ 参数说明: **AgentKey:** AgentKey在程序运行时,java-protect-agent.jar会使用到AgentKey对class文件进行解密,AgentKey主要就是存储了解密的密钥信息。 AgentKey获取优先级:优先从入参获取=》其次从环境变量获取=》最后从protect.agent.key文件中获取。