javaee加密部署,tomcat使用自己的classloader解密
http://www.2cto.com/kf/201312/264455.html
【起因】
公司需要对一个web项目进行加密之后出售,
大家都知道的,class很好反编译,
所以需要对class文件先进行加密,
然后使用自己的classloader进行解密并加载。
【步骤】
大概分两步:
1.对class文件进行加密
2.写解密class文件并加载的classloader
3.将这个classloader加入到tomcat中,也就是使tomcat可以调用到这个classloader
【加密】
1.思路
字节流读取class文件,进行简单的移位
2.实现
做了一个小程序,实现了对某文件夹下所有class文件字节流读取,并+2位的加密方式
3.说明
swing是使用myeclipse的插件做的,可能比较乱
4.代码&下载
加密程序的源代码和程序打包成jar文件上传到了这里,双击可以使用。
【classloader】
1.代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
package com.uikoo9.loader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.catalina.loader.WebappClassLoader;
/**
* 自定义的classloader
* 可以解密文件并加载
* @author uikoo9
*/
public class UClassLoader extends WebappClassLoader{
/**
* 默认构造器
*/
public UClassLoader() {
super ();
}
/**
* 默认构造器
* @param parent
*/
public UClassLoader(ClassLoader parent) {
super (parent);
}
/* (non-Javadoc)
* @see org.apache.catalina.loader.WebappClassLoader#findClass(java.lang.String)
*/
public Class<!--?--> findClass(String name) throws ClassNotFoundException {
if (name.contains( "uikoo9" )){
return findClassEncrypt(name);
} else {
return super .findClass(name);
}
}
/**
* 查找class
* @param name
* @return
* @throws ClassNotFoundException
*/
private Class<!--?--> findClassEncrypt(String name) throws ClassNotFoundException{
byte [] classBytes = null ;
try {
System.out.println( "++++++" + name);
classBytes = loadClassBytesEncrypt(name);
} catch (Exception e) {
e.printStackTrace();
}
Class<!--?--> cl = defineClass(name, classBytes, 0 , classBytes.length);
if (cl == null )
throw new ClassNotFoundException(name);
return cl;
}
/**
* 加载加密后的class字节流
* @param name
* @return
* @throws IOException
*/
private byte [] loadClassBytesEncrypt(String name) throws IOException {
String basepath = "Z:/program/workspaces/_work_03_bzb/WebRoot/WEB-INF/classes/" ; // 项目物理地址
String cname = basepath + name.replace( '.' , '/' ) + ".uikoo9" ;
System.out.println(cname);
FileInputStream in = new FileInputStream(cname);
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int ch;
while ((ch = in.read()) != - 1 ) {
buffer.write(( byte )(ch - 2 ));
}
in.close();
return buffer.toByteArray();
} finally {
in.close();
}
}
}
|
【加入到tomcat】
1.context.xml
找到tomcat下contex.xml,在context之间加入以下代码:
1
|
<loader delegate= "true" loaderclass= "com.uikoo9.loader.UClassLoader" ></loader>
|
其中loaderClass就是自己写loader,delegate=“true”的意思是只解密非系统的class和jar
2.添加loader
将自己写的loader的class文件放到tomcat\lib下
【开始】
1.使用加密程序对classes下所有文件加密,加密之后所有的class文件后缀变为uikoo9,可以自己修改源代码
2.将原classes文件夹删除,将加密后的classes文件夹复制进去
3.修改context.xml
4.tomcat\lib下添加loader.class
5.启动tomcat
经过实验是没问题的,如有疑问请留言。
javaee加密部署,tomcat使用自己的classloader解密相关推荐
- eclipse--eclipse(JavaEE版本)部署Tomcat工程(转)
介绍如何在eclipse(JavaEE版本)中部署Tomcat工程, 转自"http://www.cnblogs.com/chenjunbiao/archive/2011/12/09/228 ...
- IntelliJ IDEA 部署Tomcat及创建一个web工程
一.部署Tomcat 二.新建一个web工程 1.新建一个Project 2.现在建立一个简单的web工程,所以只勾选下面选中的,此外,本版本(IntelliJ IDEA 14.1.5只支持3.1版本 ...
- linux下部署tomcat没起成功,linux下部署tomcat 上线jpress博客系统
tomcat Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器. tomcat有三个端口 开始部署 安装tomcat 第一步:下载tomcat 安装包 tomcat官网 ...
- IDEA从零到精通06之创建web项目及部署tomcat运行
文章目录 作者简介 引言 导航 热门专栏推荐 视频讲解 概述 一.创建web项目 二.修改部署信息 三.启动服务 四.关闭服务 五.创建Servlet并访问 六.引入第三方jar包 小结 导航 热门专 ...
- 在docker上安装部署tomcat项目 超简单,拿来主义
在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...
- ansible部署tomcat及 include机制
1.本文尝试着使用ansible部署tomcat,test为测试工程 roles如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
- 部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常
部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常 参考文章: (1)部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常 ...
- 源码包部署tomcat
JAVA 在openjdk下载 jre----痩身版的-------jdk java的容器----->tomcat,websphere(银行用的多),Jboss(12306),weblogic ...
- IDEA创建Web项目及部署Tomcat
IDEA创建Web项目及部署Tomcat 说明:本文章适用于IDEA2020及以后版本 操作 IDEA创建Web项目及部署Tomcat:IDEA2020创建Web项目(及部署Tomcat) 细节补充 ...
- Docker Review - docker部署Tomcat Nginx
文章目录 Docker 部署tomcat 搜索 tomcat 下载tomcat 启动tomcat 访问tomcat 查看webapps & 修复问题 重新访问tomcat Docker 部署N ...
最新文章
- [SQL] Query mystore start [ERR] 1005 - Can't create table 'mystore.admin' (errno: 150)
- VTK:图像高斯平滑用法实战
- Verizon发布2010年数据破坏调查报告
- python之时间日期time
- 相机成像原理_数码相机的工作原理
- 前端学习(1720):前端系列javascript之生命周期下
- Python实例讲解 -- 定时播放 (闹钟+音乐)
- FastDFS介绍并在centos7中安装
- 利用for循环打印出不同的三角形
- JavaScript 开发者经常忽略或误用的七个基础知识点
- MyEclipse+Tomcat+JSP开发环境配置
- STM32_OLED显示
- vue 怎么解析xml
- 百度云直链下载-IDM+网页解析(三)
- socketException之broken pipe
- sed -n使用变量
- 查询用户连续登录的天数
- 厦门新车上牌经验分享
- 区分Linux:eth0,eth1,eth2,lo
- 项目管理中,管理者如何打造团队执行力?
热门文章
- 通俗的语言解释一下什么是 RPC 框架
- pandas dataframe遍历_Pandas循环提速7万多倍!Python数据分析攻略!
- 闹钟流程_自考专升本1月份统考粤康码申报流程
- maven打包时加入依赖jar包
- 全网首发:CENTOS FreeSwitch集成NVIDIA CODEC
- VirtualBox 6.1.4的共享剪贴板确实有问题,6.1.0正常
- LINUX查看剪贴板有哪些内容
- JAVA的图形性能,慢在哪里之分析
- 成功的人不是最聪明的那个人,但绝对是一个交流很棒的人
- 用科学数据求真:月球的激光发射器有用吗?