资源简介

java加密运行支持【spring struts mybatis hibernate mysql oracle sqlserver postgresql springMVC springboot】

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

ZJ_HOME.zip

测试项目.zip

安装配置.zip

java加密运行-管理员-11.0.0.zip

反编译软件

客户端机器码生成器.zip

视频讲解:

https://www.zhangjunbk.com/v/play/zj-3

https://www.zhangjunbk.com/v/play/zj-2

加密的tomcat项目配置如下(联系QQ:360901061,技术支持):

总的来说配置就四步(联系QQ:360901061,技术支持):

1、无需安装,运行【java加密运行-管理员-11.0.0.exe】,选择项目路径进行加密。

2.1、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-11.0.0

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

2.2、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-11.0.0

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

3、拷贝加密后的项目到tomcat的webapp中启动项目了就可以了。

4、支行单独的Jar项目,参考start.linux.sh、start.windows.bat文件


注:windows电脑属性环境变量:JAVA_TOOL_OPTIONS=-agentpath:%ZJ_HOME%\jvmlib.dll,这样无需要在setclasspath.bat中配置了。

注:linux环境变量:

JAVA_TOOL_OPTIONS:-agentpath:$ZJ_HOME/jvmlib.so

export JAVA_TOOL_OPTIONS

,这样无需要在setclasspath.bat中配置了。

加密的springboot项目配置如下(联系QQ:360901061,技术支持):

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

@echo off

set ZJ_HOME=D:\ZJ_HOME-5.2.x-11.0.0

java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar

pause

export ZJ_HOME=/ZJ_HOME-5.2.x-11.0.0

java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log &

pause

单独的加密的Jar项目配置如下(联系QQ:360901061,技术支持):

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

@echo off

set ZJ_HOME=D:\ZJ_HOME-5.2.x-11.0.0

java -agentpath:%ZJ_HOME%\jvmlib.dll -jar zjweb.min.jar

pause

export ZJ_HOME=/ZJ_HOME-5.2.x-11.0.0

java -agentpath:$ZJ_HOME/jvmlib.so -jar server.jar api.MainApplication > api.log &

pause


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


可替换默认版权输出的内容哦,请在%JAVA_HOME%/banner.txt,写上您公司的版权内容哦

【需要加密的反编译的一些场景】

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

做法是比如已经加密的AAA.jar包要提供给第三使用

1、把AAA.jar里面的所有实现全部删除,只保留空方法供在开发中调用

2、编译这些空方法无实现打包成ZZZ.jar,核心代码都在已经加密的AAA.jar,而ZZZ.jar只是供调用,方便在eclipse中编译通过

3、把AAA.jar和ZZZ.jar给第三方就可以了

如果大家有此需求,可心联系我,QQ:360901061,谢谢大家支持

张军大致想到以下几种方式:

1. 混淆器,将jar包混淆后反编译出来的东西看起来就很眼花,但如果耐心一点的高级程序员也是可以看出来的,方案不可行。

2. 对jar包进行加密,然后在jvm层重写类加载器对其进行解密,以达到对jar包的加密保护。包括用对称加密算法和非对称加密算法。不管用什么算法,在jvm层面的类加载器实现的话,其实也作用不大,因为类加载器本身被反编译出来后就基本暴露无遗了,方案不可行。

3. 可以修改java编译后的class文件的某些属性,以让反编译软件分析不了,但它也不可靠,只要按照class格式深入分析下也能反编译出来,方案不可行。

4. 修改JDK源码,定制JDK就涉及到JVM的整体改动,用户不会用别人写的JDK的,而且还要求外部使用,这种方案不太可行。 

5. 利用JDK中JVM的某些类似钩子机制和事件监听机制,监听加载class事件,使用本地方式完成class的解密。C/C 被编译后想要反编译就很麻烦了,另外还能加壳,方案不可行。

6. 对JDK运行机制进行拦截,这样对使用者来说就可以放心使用了,方案可行。

7. 比较实用的是对某特定的jar包实现加密保护,并且jar包需要提供给外部使用,在eclipse中开发,但核心逻辑部分需要保护以免被简单反编译即能看到,如大家需要此帮助,请联系QQ:360901061。

下面讲解详细每个步骤说明:

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

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

【java web发布运行在tomcat 大概加密与反编译过程如下】

对于传统的C或C 之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取。

    有几种技术可以“模糊”Java类文件,使得反编译器处理类文件的效果大打折扣。然而,修改反编译器使之能够处理这些经过模糊处理的类文件并不是什么难事,所以不能简单地依赖模糊技术来保证源代码的安全。

    我们可以用流行的加密工具加密应用,比如java-web加密解密工具。这时,最终用户在运行应用之前必须先进行解密。但解密之后,最终用户就有了一份不加密的类文件,这和事先不进行加密没有什么差别。

    再说硬件加密锁,大多数厂商提供的加密锁只能进行dll的连接或简单的api调用,只要简单地反编译,就很容易把api去掉,这样加密锁根本起不了作用,那到底是否还有更好的解决办法呢?

现提供以下解决办法:

一、打开软件:java加密运行-管理员-11.0.0.exe

1、打开java加密运行-管理员-11.0.0.exe,加密项目

2、根据“客户端机器码生成器.zip”获取机器码,机器码发给项目管理员获取项目授权reg.lic文件,把reg.lic文件放到项目所用的JDK根目录下即可完成项目注册

  


  


  

  

    

客户端机器码生成器

  

  

小提示

  


二、准备需要加密的项目(JavaWeb项目):smvc-nocipher

  

三、验证未加密的WEB-INF/class下的.class文件,可以反编译

 

四、验证未加密的WEB-INF/lib下的.jar文件,可以反编译

  

五、启动项目,肯定可以启动

普通tomcat7为例

  

  

设置java_home,如果你本机配置通用环境变量可不用设置 

set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src

  

点击启动

  

启动成功,没有问题

   

   

六、访问项目

点击提交后台

查看加密的文件


测试加密的文件.class/.jar文件是否可以反编译

拷贝加密的项目至tomcat中

启动项目,项目启动超来用不了,启动也会报错

set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src

点击startup文件

浏览器中浏览项目,首页显示没有问题,因为首页不调用后台。

点击提交后台就不行了,由于加密原因,无法使用

如何正常启动并使用呢

覆盖您本地的jdk

复制E:\must-backup\jdk-cipher\cipher#test\cover-jdk\windows\jdk1.7粘贴到E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src


配置tomcat的setclasspath.bat文件

set JAVA_HOME=E:\must-backup\jdk-cipher\cipher#test\jdk\windows\jdk1.7.0_51_src

set "JAVA_OPTS=%JAVA_OPTS% -agentpath:%JAVA_HOME%\bin\jvmlib.dll"

再次启动项目,可以见证奇迹发生了


在浏览器中打开浏览

正常访问啦,Linux同样配置的哦。

三、准备需要加密的项目(SpringBoot项目):envsmart-api-1.0-SNAPSHOT.jar

  

  

  

拷贝JDK所需文件至JDK根目录下

  

内容如下

@echo off

set JAVA_HOME=D:\free_soft\Java\cipher.test\jdk1.8.0_20

set CLASSPATH=.;%JAVA_HOME%\lib;%CLASSPATH%

set PATH=%JAVA_HOME%\bin;%PATH%

java -agentpath:%JAVA_HOME%\bin\jvmlib.dll -jar envsmart-api-1.0-SNAPSHOT.jar

pause

  

用加密工具加密SpringBoot项目

   

   

  

  

  

  

四、准备需要加密的项目(单独的Jar项目):test.jar

1、直接使用加密工具加密Jar包项目

2、加密后的Jar包使用命令执行,即可正常运行

  


建议方案:根本的方法是凡是拷贝的副本,在运行时,程序自动连接在jvm内核中做正版验证。至少解决大部分问题。

资源截图

代码片段和文件信息

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-11-22 00:51  java加密运行-管理员-11.0.0\
     文件    28263424  2020-11-22 00:50  java加密运行-管理员-11.0.0\java加密运行-管理员-11.0.0.exe
     文件      111104  2020-11-21 00:58  java加密运行-管理员-11.0.0\JCByte.dll
     文件      196608  2020-11-21 00:58  java加密运行-管理员-11.0.0\jvmlib.dll

评论

共有 条评论