- 浏览: 600608 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
jianxin1009:
你说的答案是对的
Re: 一道微软的面试题(年薪40万) -
thrillerzw:
应该相信爱情
忽然相信爱情。。。 -
weng:
jaxchow 写道mikeandmore 写道我觉得国外之所 ...
国外项目的代码质量真是高啊 -
cinhoo:
怎么也应该叫大蛇蛋才对嘛
lazypy 这个小蛇蛋不错 -
rosolio:
这个怎么解决?
Hibernate Annotation的中@ManyToOne和CascadeType问题
在C世界,对代码进行加密,主要通过加壳的方式。所谓加壳,就是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,这样可以在防止代码的反编译,当然,有加壳工具,也有解壳工具,虽然不能100%防止crack,但仍然给代码增加一层有力的保护。
然而在java世界,保护代码是件很困难的事情,因为class文件非常规范,极易反编译,且反编译后的代码清晰可读。常见的保护办法是使用混淆器,打乱class和function以及变量的名字,可以干扰反编译后的代码的可读性。虽然简单提高了代码的安全性,但还仅仅相当于未加壳的C程序。
java可以加壳吗?以前我认为这是不可能的,因为动态加载代码这样的内存级别的操作,java无法做到,除非使用JNI(Java Native Interface),调用自己编写的C代码,在C代码中实现动态加载java代码。但是,C如何加载java代码呢?这需要对JVM相当的了解。所以当时的我认为这是不可能的。
然而,最近接触的一些知识告诉我——java也可以加壳!!
1.URLClassLoader。用URLClassLoader可以在java程序的运行期间,再将文件夹或者jar加入到classpath中,这个特性事实上就是动态加载。既然可以动态加载class的文件夹或者jar,为何不可以加载加密后的classes呢,将classes用自己的方式加密,在URLClassLoader调用时,使用自己的方式解密。不就是达到了加壳的目的了吗?不过解密的代码放在何处是个问题,就是说解壳器的代码暴露在外,还是很危险的。
2.javassist。这实在是一个非常神奇的新技术,我是在学习Tapestry5时第一次遇到这个包的,他可以动态创建java字节码,甚至可以修改你已经写好的函数,比如你的getter和setter,只是简单的读取和赋值,你可以在Runtime用他修改你的getter和setter,让你的getter和setter每次调用时都可以触发某些代码。借助这项神奇的技术,一定可以实现更强大的动态加载,加壳也就有了可能。
让我有些不爽的是,javassist又是小日本创建的项目。
http://www.open-open.com/open54954.htm
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学 系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。
真是让人感慨,国外的计算机科学领域在做什么,国内的计算机科学领域又在做什么,跟在别人的技术后面,做一些肤浅的事情。不说了,跑题了~~~以后再聊这个问题
2.javassist。这实在是一个非常神奇的新技术,我是在学习Tapestry5时第一次遇到这个包的,他可以动态创建java字节码,甚至可以修改你已经写好的函数,比如你的getter和setter,只是简单的读取和赋值,你可以在Runtime用他修改你的getter和setter,让你的getter和setter每次调用时都可以触发某些代码。借助这项神奇的技术,一定可以实现更强大的动态加载,加壳也就有了可能。
并非只有javassist才能做到,ASM早就可以实现动态修改字节码的功能
可否给点详细情报
那你的URLClassLoader需要夹克么?不加壳别人非常容易知道你是怎样加密的。
区别在于小日本的可以无中生有,proxy只能移花接木
然而在java世界,保护代码是件很困难的事情,因为class文件非常规范,极易反编译,且反编译后的代码清晰可读。常见的保护办法是使用混淆器,打乱class和function以及变量的名字,可以干扰反编译后的代码的可读性。虽然简单提高了代码的安全性,但还仅仅相当于未加壳的C程序。
java可以加壳吗?以前我认为这是不可能的,因为动态加载代码这样的内存级别的操作,java无法做到,除非使用JNI(Java Native Interface),调用自己编写的C代码,在C代码中实现动态加载java代码。但是,C如何加载java代码呢?这需要对JVM相当的了解。所以当时的我认为这是不可能的。
然而,最近接触的一些知识告诉我——java也可以加壳!!
1.URLClassLoader。用URLClassLoader可以在java程序的运行期间,再将文件夹或者jar加入到classpath中,这个特性事实上就是动态加载。既然可以动态加载class的文件夹或者jar,为何不可以加载加密后的classes呢,将classes用自己的方式加密,在URLClassLoader调用时,使用自己的方式解密。不就是达到了加壳的目的了吗?不过解密的代码放在何处是个问题,就是说解壳器的代码暴露在外,还是很危险的。
2.javassist。这实在是一个非常神奇的新技术,我是在学习Tapestry5时第一次遇到这个包的,他可以动态创建java字节码,甚至可以修改你已经写好的函数,比如你的getter和setter,只是简单的读取和赋值,你可以在Runtime用他修改你的getter和setter,让你的getter和setter每次调用时都可以触发某些代码。借助这项神奇的技术,一定可以实现更强大的动态加载,加壳也就有了可能。
让我有些不爽的是,javassist又是小日本创建的项目。
http://www.open-open.com/open54954.htm
Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京技术学院的数学和计算机科学 系的 Shigeru Chiba 所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。
真是让人感慨,国外的计算机科学领域在做什么,国内的计算机科学领域又在做什么,跟在别人的技术后面,做一些肤浅的事情。不说了,跑题了~~~以后再聊这个问题
评论
19 楼
tbest
2007-03-23
长见识了!
18 楼
run_xiao
2007-03-22
引用
2.javassist。这实在是一个非常神奇的新技术,我是在学习Tapestry5时第一次遇到这个包的,他可以动态创建java字节码,甚至可以修改你已经写好的函数,比如你的getter和setter,只是简单的读取和赋值,你可以在Runtime用他修改你的getter和setter,让你的getter和setter每次调用时都可以触发某些代码。借助这项神奇的技术,一定可以实现更强大的动态加载,加壳也就有了可能。
并非只有javassist才能做到,ASM早就可以实现动态修改字节码的功能
17 楼
wjsir
2007-03-21
这不但是个技术问题,还是个法律问题呢,据说在我国,传输加密信息,确切的说,传输不能被D查看的信息是非法的——据说是这样
16 楼
rautinee
2007-03-21
关键是一个国家和民族对待科学的态度,现在的国人很浮躁,整天都想着如何快速致富,劳动密集型产业,国内的软件业真正搞创新的有多少呢?大部分的公司铺天盖地的招聘信息都是熟悉struts/hibernate/spring/jdo等等(我是指java的b/s开发方面),现在大家都在做外包,软件公司都成了劳动密集型企业,很多程序员跟服装厂的工人差不多少,区别在于人家用缝纫机,我们用键盘,整天重复着同样的工作,没有创新,没有激情。。。
我也发发牢骚!
我也发发牢骚!
15 楼
towjzhou
2007-03-20
请100个初程重写一遍软件比什么加密都管用.
14 楼
roger
2007-03-19
直接用混淆器,反编译出的代码基本上没什么价值
不过使用混淆器,要慎用Class.forName("")这样的方式来load class
不过使用混淆器,要慎用Class.forName("")这样的方式来load class
13 楼
抛出异常的爱
2007-03-19
混嚣器把
jdk一起混了...
jdk一起混了...
12 楼
jasongreen
2007-03-19
larlf 写道
可以先对java.exe加壳,然后可运行经过加密后的Jar文件。很多加密的公司都有相关的解决方案。
可否给点详细情报
11 楼
qingjian
2007-03-19
国家 人才。。。悲哀
10 楼
dengyin2000
2007-03-19
引用
1.URLClassLoader。用URLClassLoader可以在java程序的运行期间,再将文件夹或者jar加入到classpath中,这个特性事实上就是动态加载。既然可以动态加载class的文件夹或者jar,为何不可以加载加密后的classes呢,将classes用自己的方式加密,在URLClassLoader调用时,使用自己的方式解密。不就是达到了加壳的目的了吗?不过解密的代码放在何处是个问题,就是说解壳器的代码暴露在外,还是很危险的。
那你的URLClassLoader需要夹克么?不加壳别人非常容易知道你是怎样加密的。
9 楼
larlf
2007-03-19
可以先对java.exe加壳,然后可运行经过加密后的Jar文件。很多加密的公司都有相关的解决方案。
8 楼
jasongreen
2007-03-19
solospider 写道
这是个很神奇的技术。。
不过我想问一下Dynamic Proxy不是也可以实现这个功能吗?
小日本的那个开源的东东和Dynamic Proxy有什么区别?
不过我想问一下Dynamic Proxy不是也可以实现这个功能吗?
小日本的那个开源的东东和Dynamic Proxy有什么区别?
区别在于小日本的可以无中生有,proxy只能移花接木
7 楼
liangguanhui
2007-03-19
guoshiguan 写道
java开源,总觉得不是天经地意的事吗,
Java是开源,不代表用Java做的东西都是开源的
6 楼
guoshiguan
2007-03-19
java开源,总觉得不是天经地意的事吗,
5 楼
fantasy
2007-03-19
国内的开源组织还是太少了
4 楼
solospider
2007-03-19
这是个很神奇的技术。。
不过我想问一下Dynamic Proxy不是也可以实现这个功能吗?
小日本的那个开源的东东和Dynamic Proxy有什么区别?
不过我想问一下Dynamic Proxy不是也可以实现这个功能吗?
小日本的那个开源的东东和Dynamic Proxy有什么区别?
3 楼
zhlmmc
2007-03-19
小日本在计算机方面的确很强。。。。
2 楼
天之魔神
2007-03-18
确实不错,java真的很深奥
1 楼
dennis_zane
2007-03-18
这样的帖子不应该投隐藏吧,我投良好了
发表评论
-
jvm调优经验
2010-04-23 17:50 971转自一个没写地址的网站,所以我也写他的网址了,肯定不是他们原创 ... -
jvm优化配置
2010-04-23 17:38 1114JVM优化配置《一》 OOM ... -
国外项目的代码质量真是高啊
2010-03-27 02:19 2665近期有幸承接到了一个 ... -
django做的那么好,我还有必要维护做java版lightmtv的吗?
2009-03-22 21:07 2212我一直想做web框架,后来做了lightmtv。 做的终于有 ... -
AOP不就是HOOK嘛
2008-10-07 16:20 1245AOP就是HOOK 炒概念,大忽悠 -
Hibernate各模块之间应注意兼容性
2008-09-10 16:11 1479http://www.hibernate.org/6.htm ... -
让runjettyrun可以修改运行中的项目
2008-07-30 16:53 1927最近使用runjettyrun 替代了jettylaucher ... -
你认为java适合开发互联网网站吗?
2008-07-21 13:44 4153我这里说的互联网网站指的是拥有很大并发访问量的互联网网站,并且 ... -
Person对象中"姓-名"的设计及中英习惯不同的问题
2008-06-25 11:42 1468以前一直用 FirstName,LastName来进行设计,一 ... -
Maven-Ant-Task 使用手记
2008-04-15 15:51 7664Maven的依赖管理的确是个好东西。但在集成构建方面,Ant显 ... -
对象关联关系
2008-03-04 15:03 2644双向关联,lazy Global Refrence Key, ... -
给国人的CTE的一些建议
2008-01-17 10:45 2821非常好的项目,首先他是中国人开发的,太棒了! http://w ... -
Hibernate ? ActiveRecord ? pretty code!
2008-01-09 22:44 2358看到了段代码,贴出来聊聊 public class Per ... -
官方Annotations文档中文版
2007-12-30 12:03 2623以下几个Java官方文档描述了一些java区别于其他语言的特殊 ... -
Holder模式
2007-04-28 15:33 1946程序经常需要用到配置文件,但我们又并不想关心何时读取配置文件, ... -
获取java heap 大小
2007-04-09 14:28 2628The heap is the area in memory ... -
运行web项目的几种方法
2007-04-02 16:56 40301. 使用tomcat plugin,eclipse 插件,可 ... -
如何取得某个包下面的所有的Class对象
2007-03-17 14:18 4252查看了javadoc,google了,没有找到好的答案,有个例 ... -
请大家试用,疯狂POJO,crazyPOJO-0.0.1
2007-03-15 23:14 4431什么是crazyPOJO? 是一个基于jdk5 annotat ... -
修改了Tapestry5的源码,完全支持中文了
2007-03-15 22:25 6195Tapestry5最新check下来的代码,中文问题还没有解决 ...
相关推荐
### 图形的形态变换与地图代数...这种方法不仅适用于矢量数据,也适用于栅格数据,具有一定的普遍性。通过实际案例验证了该算法的有效性和实用性。此外,该研究还为地图代数领域内的图形分析和处理提供了一种新的思路。
修炼成Javascript中级程序员必知必会_资源分享
内容概要:本文详细介绍了如何使用MATLAB的深度学习工具箱,在果树病虫害识别任务中从数据准备、模型设计、训练优化到最后的模型评估与应用全流程的具体实施步骤和技术要点。涵盖了MATLAB深度学习工具箱的基本概念及其提供的多种功能组件,如卷积神经网络(CNN)的应用实例。此外,文中还具体讲述了数据集的收集与预处理方法、不同类型的深度学习模型搭建、训练过程中的超参数设定及其优化手段,并提供了病虫害识别的实际案例。最后展望了深度学习技术在未来农业领域的潜在影响力和发展前景。 适合人群:对深度学习及农业应用感兴趣的科研人员、高校师生和相关从业者。 使用场景及目标:①希望掌握MATLAB环境下构建深度学习模型的方法和技术细节;②从事果树病虫害管理研究或实践,寻找高效的自动化解决方案。 阅读建议:在阅读本文之前,建议读者熟悉基本的MATLAB编程环境及初步了解机器学习的相关概念。针对文中涉及的理论和技术难点,可以通过官方文档或其他教程进行补充学习。同时,建议动手实践每一个关键点的内容,在实践中加深理解和掌握技能。
nodejs010-nodejs-block-stream-0.0.7-1.el6.centos.alt.noarch.rpm
机械模型与技术交底书的融合:创新点详解与解析,机械模型加技术交底书,有创新点 ,机械模型; 技术交底书; 创新点,创新机械模型与技术交底书详解
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
nodejs010-nodejs-cmd-shim-1.1.0-4.1.el6.centos.alt.noarch.rpm
西门子四轴卧加后处理系统:828D至840D兼容,四轴联动高效加工解决方案,支持图档处理及试看程序。,西门子四轴卧加后处理,支持828D~840D系统,支持四轴联动,可制制,看清楚联系,可提供图档处理试看程序 ,核心关键词:西门子四轴卧加后处理; 828D~840D系统支持; 四轴联动; 制程; 联系; 图档处理试看程序。,西门子四轴卧加后处理程序,支持多种系统与四轴联动
基于黏菌优化算法(SMA)的改进与复现——融合EO算法更新策略的ESMA项目报告,黏菌优化算法(SMA)复现(融合EO算法改进更新策略)——ESMA。 复现内容包括:改进算法实现、23个基准测试函数、多次实验运行并计算均值标准差等统计量、与SMA对比等。 程序基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。 ,SMA复现;EO算法改进;算法实现;基准测试函数;实验运行;统计量;SMA对比;程序注释;代码质量;学习理解。,标题:ESMA算法复现:黏菌优化与EO算法融合改进的实证研究
基于MATLAB的Stewart平台并联机器人仿真技术研究与实现:Simscape环境下的虚拟模拟分析与应用,MATLAB并联机器人Stewart平台仿真simscape ,MATLAB; 并联机器人; Stewart平台; 仿真; Simscape; 关键技术。,MATLAB中Stewart平台并联机器人Simscape仿真
Grad-CAM可视化医学3D影像
探索comsol泰勒锥:电流体动力学的微观世界之旅,comsol泰勒锥、电流体动力学 ,comsol泰勒锥; 电流体动力学; 锥形结构; 电场影响,COMSOL泰勒锥与电流体动力学研究
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
PFC6.03D模型动态压缩模拟与SHPB霍普金森压杆系统理论及实验数据处理技术解析,PFC6.03D模型,动态压缩模拟,还包括: SHPB霍普金森压杆系统理论知识介绍,二波法和三波法处理实验数据,提出三波波形,计算动态压缩强度等 ,PFC模型; 动态压缩模拟; SHPB霍普金森压杆系统; 理论介绍; 二波法处理; 三波法处理; 三波波形; 动态压缩强度。,"PFC模型下的动态压缩模拟及SHPB理论实践研究"
ProASCI 开发板原理图,适用于A3P3000
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
1、文件内容:pykde4-devel-4.10.5-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pykde4-devel-4.10.5-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
基于Comsol模拟的三层顶板随机裂隙浆液扩散模型:考虑重力影响的瞬态扩散规律分析,Comsol模拟,考虑三层顶板包含随机裂隙的浆液扩散模型,考虑浆液重力的影响,模型采用的DFN插件建立随机裂隙,采用达西定律模块中的储水模型为控制方程,分析不同注浆压力条件下的浆液扩散规律,建立瞬态模型 ,Comsol模拟; 随机裂隙浆液扩散模型; 浆液重力影响; DFN插件; 达西定律模块储水模型; 注浆压力条件; 浆液扩散规律; 瞬态模型,Comsol浆液扩散模型:随机裂隙下考虑重力的瞬态扩散分析