军军小站|张军博客  上海加盾信息科技有限公司

java加密运行class/jar/war【游戏私服程序保护】(支持window/linux/Mac/龙芯Linux系统/龙芯)

加密工具介绍

java加密运行支持但不限于的框架:spring+struts+mybatis+hibernate+mysql+oracle+sqlserver+postgresql+springMVC+springboot+springcloud。

java加密运行支持但不限于的系统:window/linux/Mac/龙芯Linux系统/龙芯。

java加密运行支持但不限于的项目:JavaWeb项目、Tomcat项目、SpringBoot项目、Spring微服务项目、单独的Jar包项目、几乎所有的Java项目都支持加密运行,保护了源码,无法反编译.class、.jar包。

java加密运行支持但不限于的容器:Docker、BlueData、ClusterHQ、CoreOS、Kismatic、PortWorx、Rancher Labs、Shippable、Sysdig Cloud、Tutum、Twistlock、Weaveworks;等等。

java加密运行支持项目转换成exe:SpringBoot项目、Spring微服务项目、单独的Jar包项目等等。

为什么要加密java的class或jar文件???

1、公司开发的java web要项目打包成war包往外卖,怎么对war包进行处理,防止其自己拷贝后往外出售呢,如果不通过加密的方式,还有其他方式防止其出售呢.

2、大家都知道的,class很好反编译。出于对知识产权和自身软件的保护,不希望任何人都可以看到源代码或者被反编译工具进行解密。

对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取。
有几种技术可以“模糊”Java类文件,使得反编译器处理类文件的效果大打折扣。然而,修改反编译器使之能够处理这些经过模糊处理的类文件并不是什么难事,所以不能简单地依赖模糊技术来保证源代码的安全。
我们可以用流行的加密工具加密应用,比如java-web加密解密工具。这时,最终用户在运行应用之前必须先进行解密。但解密之后,最终用户就有了一份不加密的类文件,这和事先不进行加密没有什么差别。
再说硬件加密锁,大多数厂商提供的加密锁只能进行dll的连接或简单的api调用,只要简单地反编译,就很容易把api去掉,这样加密锁根本起不了作用,那到底是否还有更好的解决办法呢?

项目加密运行提示过期怎么办???

根据加密项目启动运行时获取机器码,机器码发给项目管理员获取项目授权reg.lic文件,把reg.lic文件放到项目所用的【java加密运行-管理员-15.0.0.2.zip】解压后的根目录下(例如:**/ZJ_HOME/ZJ_HOME-5.2.x-15.0.0.2/**下)即可完成项目注册

获取机器码(Windows双击start.bat,Linux执行start.sh)

在这里插入图片描述

在这里插入图片描述

无需安装,直接运行【 java加密运行-管理员-15.0.0.2.zip 】,根据上面生成的机器码,生成reg.lic文件

在这里插入图片描述

把上面生成的注册文件 reg.lic 文件放到ZJ_HOME-x.x.x-15.0.0.2下面,即可完成注册

在这里插入图片描述

tomcat项目加密运行

Windows配置你的tomcat环境变量,tomcat根目录\bin\setclasspath.bat

模板

set ZJ_HOME=ZJ_HOME根目录
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%ZJ_HOME%\jvmlib.dll"  

示例

set ZJ_HOME=C:\ZJ_HOME-5.2.x-15.0.0.2
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%ZJ_HOME%\jvmlib.dll"

Linux配置你的tomcat环境变量,tomcat根目录/bin/setclasspath.sh

模板

ZJ_HOME=ZJ_HOME根目录
JAVA_OPTS="$JAVA_OPTS -agentpath:$ZJ_HOME/jvmlib.so" 

示例

ZJ_HOME=/ZJ_HOME-5.2.x-15.0.0.2
JAVA_OPTS="$JAVA_OPTS -agentpath:$ZJ_HOME/jvmlib.so"

无需安装,直接运行【 java加密运行-管理员-15.0.0.2.zip 】,选择项目路径进行加密。

在这里插入图片描述
拷贝加密后的项目到tomcat的webapp中启动项目了就可以了。

测试加密后的文件(class/jar)

在这里插入图片描述
在这里插入图片描述

springboot项目加密运行配置

springboot支持,建立xxx.bat或xxx.sh文件,文件内容如下:

Windows示例

@echo off
set ZJ_HOME=D:\ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar

Linux示例

export ZJ_HOME=/ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log &

springboot项目加密运行配置

springboot支持,建立xxx.bat或xxx.sh文件,文件内容如下:

Windows示例

@echo off
set ZJ_HOME=D:\ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar

Linux示例

export ZJ_HOME=/ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log &

单独的Jar项目加密运行配置

单独的Jar支持,建立xxx.bat或xxx.sh文件,文件内容如下:

Windows示例

@echo off
set ZJ_HOME=D:\ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar

Linux示例

export ZJ_HOME=/ZJ_HOME-5.2.x-15.0.0.2
java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log &

加密的Jar转换成EXE项目配置如下(联系QQ:360901061,技术支持):

在这里插入图片描述

更常用的是在开发中加密自己的jar包,提供给第三方使用

做法是比如已经加密的AAA.jar包要提供给第三使用
1、把AAA.jar里面的所有实现全部删除,只保留空方法供在开发中调用
2、编译这些空方法无实现打包成ZZZ.jar,核心代码都在已经加密的AAA.jar,而ZZZ.jar只是供调用,方便在eclipse中编译通过
3、把AAA.jar和ZZZ.jar给第三方就可以了
如果大家有此需求,可心联系我,QQ:360901061,谢谢大家支持

本文为张军原创文章,转载无需和我联系,但请注明来自张军的个人博客https://www.zhangjunbk.com
本文来源:军军小站|张军博客