- 浏览: 598813 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
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 967转自一个没写地址的网站,所以我也写他的网址了,肯定不是他们原创 ... -
jvm优化配置
2010-04-23 17:38 1109JVM优化配置《一》 OOM ... -
国外项目的代码质量真是高啊
2010-03-27 02:19 2655近期有幸承接到了一个 ... -
django做的那么好,我还有必要维护做java版lightmtv的吗?
2009-03-22 21:07 2208我一直想做web框架,后来做了lightmtv。 做的终于有 ... -
AOP不就是HOOK嘛
2008-10-07 16:20 1238AOP就是HOOK 炒概念,大忽悠 -
Hibernate各模块之间应注意兼容性
2008-09-10 16:11 1477http://www.hibernate.org/6.htm ... -
让runjettyrun可以修改运行中的项目
2008-07-30 16:53 1924最近使用runjettyrun 替代了jettylaucher ... -
你认为java适合开发互联网网站吗?
2008-07-21 13:44 4148我这里说的互联网网站指的是拥有很大并发访问量的互联网网站,并且 ... -
Person对象中"姓-名"的设计及中英习惯不同的问题
2008-06-25 11:42 1465以前一直用 FirstName,LastName来进行设计,一 ... -
Maven-Ant-Task 使用手记
2008-04-15 15:51 7655Maven的依赖管理的确是个好东西。但在集成构建方面,Ant显 ... -
对象关联关系
2008-03-04 15:03 2637双向关联,lazy Global Refrence Key, ... -
给国人的CTE的一些建议
2008-01-17 10:45 2812非常好的项目,首先他是中国人开发的,太棒了! http://w ... -
Hibernate ? ActiveRecord ? pretty code!
2008-01-09 22:44 2353看到了段代码,贴出来聊聊 public class Per ... -
官方Annotations文档中文版
2007-12-30 12:03 2614以下几个Java官方文档描述了一些java区别于其他语言的特殊 ... -
Holder模式
2007-04-28 15:33 1934程序经常需要用到配置文件,但我们又并不想关心何时读取配置文件, ... -
获取java heap 大小
2007-04-09 14:28 2614The heap is the area in memory ... -
运行web项目的几种方法
2007-04-02 16:56 40271. 使用tomcat plugin,eclipse 插件,可 ... -
如何取得某个包下面的所有的Class对象
2007-03-17 14:18 4247查看了javadoc,google了,没有找到好的答案,有个例 ... -
请大家试用,疯狂POJO,crazyPOJO-0.0.1
2007-03-15 23:14 4427什么是crazyPOJO? 是一个基于jdk5 annotat ... -
修改了Tapestry5的源码,完全支持中文了
2007-03-15 22:25 6187Tapestry5最新check下来的代码,中文问题还没有解决 ...
相关推荐
Java加壳技术是一种保护Java程序不被轻易反编译或篡改的安全手段,它通过自定义类加载器来实现对原始字节码的包装。在Java中,类加载器是负责加载类到JVM(Java虚拟机)的核心组件。自定义类加载器允许开发者根据...
然而,近年来的发展表明,通过某些特定的技术手段,Java也是可以实现加壳的。具体来说,可以考虑以下两种方案: 1. **使用JNI技术**:通过Java Native Interface (JNI)接口调用C/C++代码,进而实现在C/C++中对Java...
此工具可以针对java打出来的jar包进行二次打包,实现jar包保护,防止别人反编译进行代码抄袭,保护知识产权
所谓加壳,即是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,这样能够在避免代码的反编译,当然,有加壳东西,也有解壳东西,尽管不能避免crack,但仍然给代码增加一层有力的维护。...
然而,加壳也可能被恶意软件利用来逃避检测,因此“加壳检查工具”就显得尤为重要。 加壳检查工具的主要功能是检测一个程序是否被加壳处理,以及识别可能存在的后门或恶意代码。这类工具通常通过分析文件的头部信息...
软件加壳 论文有点乱,有需要就拿去 有些程序的试用版每次运行都有时间限制,例如运行10分钟或20分钟就停止工作,必须重新运行该程序才能正常工作。这些程序里面自然有个定时器来统计程序运行的时间。 这种方法使用...
给winfrom做的项目 进行加壳 项目加壳,保证了软件的代码的安全,有漏洞无风险
在IT行业中,"软件加壳"是一种保护程序不被逆向工程分析或篡改的技术。在C#中实现软件加壳并非易事,因为C#编译后的代码是.NET的MSIL(中间语言),相对于汇编语言,更容易被反编译工具解析。然而,通过一些策略和第...
加壳工具,如Themida 2.2.9.0(TMD加壳工具),是IT行业中用于软件保护的一种重要技术。它的工作原理是通过在原始可执行文件(PE文件)周围添加一层外壳,以此来隐藏和混淆程序的原始代码,增加逆向工程的难度。在...
菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀菜鸟也来加壳免杀
然而,它也被用于恶意软件的隐藏,因此,合法和正当使用加壳工具显得尤为关键。 本文将详细介绍一款名为“超级加壳工具GUI版”的高级工具,这款工具提供图形用户界面版本,以一种简便的方式对可执行文件进行加壳...
WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程WinlicenseFiles 加壳 教程
软件加壳、加壳工具
通过研究这些源代码,开发者可以了解如何在驱动程序上实施加壳技术,同时也可以深入理解Windows驱动程序的内部工作原理,以及如何与操作系统交互。然而,这样的技术应当谨慎使用,以免违反法律法规或道德规范。在...
总之,检测加壳工具是网络安全领域的重要工具,它们帮助我们识别和对抗加壳的恶意软件,同时也促进了软件安全性和知识产权的保护。随着加壳技术的不断发展,这类检测工具的更新和优化将持续进行,以适应新的挑战。
开发者需要知道如何在易语言中执行外部命令,如调用UPX的命令行接口,指定输入文件(未加壳的程序)、输出文件(加壳后的程序)以及加壳参数。此外,为了使加壳过程更加智能,可能还需要获取程序的安装目录,以便将...
加壳后的程序crash生成的dmp文件不好在VC++上调试,这里是一个转换程序,转换加壳后的dmp到加壳前的dmp。以便更方便调试它。 用法如下: DmpMatch.exe xxx.dmp my_tmd.exe 第一个参数是dmp文件名,第二个参数是未...
kc加壳助手 用于给exe软件、程序加密 加壳
加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件加壳软件