java代码加壳,关于java加壳和代码混淆
在C中,进⾏,⾸要经过加壳的⽅法。所谓加壳,即是先将程序代码加密,然后⽤特定的程序加载器,将代码解密后加载进内存,这样能够在避免代码的反编译,当然,有加壳东西,也有解壳东西,尽管不能100%避免crack,但仍然给代码增加⼀层有⼒的维护。
然⽽在Java中,维护代码是件很困难的⼯作,由于class⽂件⼗分标准,很容易反编译,且反编译后的代码明晰可读。常见的维护办法是运⽤器,打乱class和function以及变量的姓名,能够搅扰反编译后的代码的可读性。尽管简略提⾼了代码的安全性,但还仅仅适当于未加壳的C程序。
java源代码加密java能够加壳吗?曾经我以为这是不能够的,由于动态加载代码这样的内存等级的操作,java⽆法做到,除⾮运⽤
JNI(JavaNativeInterface),调⽤⾃个编写的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每次调⽤时都能够触发某些代码。凭借这项奇特的技能,必定能够完成更强壮的动态加载,加壳也就有了能够。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。