专家和您一起谈谈java加壳的问题
当前位置:以往代写 > JAVA 教程 >专家和您一起谈谈java加壳的问题
2019-06-14

专家和您一起谈谈java加壳的问题

专家和您一起谈谈java加壳的问题

在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框架。

    关键字:

在线提交作业