zl程序教程

您现在的位置是:首页 >  后端

当前栏目

关于Java加壳和代码混淆

JAVA代码 关于 混淆 加壳
2023-09-11 14:20:54 时间

在C中,进行代码加密,首要经过加壳的方法。所谓加壳,即是先将程序代码加密,然后用特定的程序加载器,将代码解密后加载进内存,这样能够在避免代码的反编译,当然,有加壳东西,也有解壳东西,尽管不能100%避免crack,但仍然给代码增加一层有力的维护。
然而在Java中,维护代码是件很困难的工作,由于class文件十分标准,很容易反编译,且反编译后的代码明晰可读。常见的维护办法是运用代码混淆器,打乱class和function以及变量的姓名,能够搅扰反编译后的代码的可读性。尽管简略提高了代码的安全性,但还仅仅适当于未加壳的C程序。
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每次调用时都能够触发某些代码。凭借这项奇特的技能,必定能够完成更强壮的动态加载,加壳也就有了能够。

最新内容请见作者的GitHub页:http://qaseven.github.io/


[DEBUG] (f) classpathElements = [D:\cache\git-repos\showandshare\showandshare\showandshare.
Java后端代码混淆应用实践 # 前言 前端代码因为需要直接传输到客户端执行,因此代码混淆技术较早的开始发展,当前比较成熟。后端代码长期以来混淆的需求并不突出,然而随着Java代码需要被客户接触到,并不放在公司完全受控的环境,如以apk形式在用户手机上或以应用形式在专有云中,因此后端代码混淆提到了日程中。 成熟的Java混淆工具很多,如下表: | 名称 | 授权
java 代码混淆 引用:http://java-server.iteye.com/blog/1166114 java代码很容易被反编译,以下使用proguard来保护我们的代码 proguard选项很多,容易迷糊,现在就把我的配置写下来(实际使用中),以供参考 1.到http://proguard.sourceforge.net/下载proguard 2.准备好你的jar包,我在这里举例叫做test.jar。
Java实现图书管理系统 本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建 如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面