关于Java加壳和代码混淆
在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父类,并且在类中创建方法来来实现页面
相关文章
- java虚拟机学习-JVM调优总结(5)
- java安装1.8和1.7,报错:Error: Registry key 'SoftwareJavaSoftJava Runtime Environment'CurrentVers
- 【Java】查看端口占用并结束占用进程DOS命令
- Java数据类型—StringBuilder与StringBuffer
- 2022年 Java 最新面试题大全,这些你学会多少呢?
- Java 重写ServletResponse中的内容
- 【Java实习生】每日10道面试题打卡!
- Java hashCode() 和 equals()的若干问题解答
- Java 实现的SnowFlake生成UUID (Java代码实战-007)
- 支付对接常用的加密方式及java代码实现
- 使用 JUnit 进行 Java 代码的单元测试
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- Java基础篇:抽象类与接口
- Redmonk发布Java框架流行度调研结果
- 华为OD机试 -找车位(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -找字符(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -开放日活动(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -静态扫描最优成本(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 工号不够用了(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 上机题目(0基础)- Java网络操作-Socket实现client和server端通信(Java)
- Java核心类库:内部类那点事儿
- Sublime Text 3 插件安装、搭建Python、Java开发环境
- 亿级别记录的mongodb分页查询java代码实现
- 从零学Java(27)之 Random随机数
- @Java Web 程序员,我们一起给程序开个后门吧:让你在保留现场,服务不重启的情况下,执行我们的调试代码
- java项目异常监控_JAVA项目中的常用的异常处理情况总结