基于对JAR包内资源的加密以及拓展ClassLoader來构建的一套程序加密启动动态解密运行的方案,避免源码泄露或反编译
- 无需侵入代码,只需要把编译好的JAR包通过工具加密即可
- 完铨内存解密,杜绝源码以及字节码泄露或反编译
- 支持所有JDK内置加解密算法。
- 可选择需要加解密的字节码或其他资源文件避免计算资源浪费。
JDK pany.project 开头那只加密自身项目的字节码即可采用以下方式。
Java反编译软件可以反編译.class文件,生成.java文件让所有java程序在你眼前透明
0 | 0 |
为了良好体验不建议使用迅雷下载
会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
为了良好体验不建议使用迅雷下载
0 | 0 |
为了良好体验,不建议使用迅雷下载
您的积分不足将扣除 10 C币
为了良好体验,不建议使鼡迅雷下载
开通VIP会员权限免积分下载
JDK pany.project 开头那只加密自身项目的字节码即可采用以下方式。
// 1. 采用Ant表达式过滤器更简洁地来指定需要加密的资源 // 2. 采用更精确的正则表达式过滤器。
当过滤器的逻辑复杂或条件较多时可以将过滤器分成多个并且使用 XKit 工具类提供的多个过滤器混合方法混合成一个,XKit 提供 “与” “或” “非” 三种逻辑运算的混合
// 1. 与运算,即所有过滤器都满足的情况下才满足mix() 方法返回的是this,可以继续拼接 // 2. 或运算,即任意一個过滤器满足的情况下就满足mix() 方法返回的是this,可以继续拼接 // 3. 非运算,即除此之外都满足该例子中即排除项目或其他模块和第三方依賴jar中的静态文件。
如果项目中使用了 JPA 且实现为Hibernate时由于Hibernate自己解析加密后的Jar文件,所以无法正常启动 可以采用以下解决方案
由于静态文件被加密后文件体积变大,Spring Boot 会采用文件的大小作为 Content-Length 头返回给浏览器 但实际上通过 XJar 加载解密后文件大小恢複了原本的大小,所以浏览器认为还没接收完导致一直等待服务端 由此我们需要在加密时忽略静态文件的加密,实际上静态文件也没加密的必要因为即便加密了用户在浏览器 查看源代码也是能看到完整的源码的。通常情况下静态文件都会放在 static/ 和 META-INF/resources/ 目录下 我们只需要在加密时通过过滤器排除这些资源即可,可以采用以下的过滤器:
根据加密算法而定56,128256 | |
根据加密算法而定,128 | |
0 | 0:普通模式 1:危险模式(免密码启动) |
需要加密的资源路径表达式 | |
无需加密的资源路径表达式 |