java代码虚拟化保护,java虚拟机机制
如何有效的防止Java程序被反编译和破解
由于Java字节码的抽象级别较高,因此它们较容易被反编译。下面介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。
创新互联是一家集网站建设,津南企业网站建设,津南品牌网站建设,网站定制,津南网站建设报价,网络营销,网络优化,津南网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1.隔离Java程序
最简单的方法就是让用户不能够访问到Java Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通过接口提供服务的标准和协议也越来越多,例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。
2.对Class文件进行加密
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。
在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的ClassLoader)。自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中。在这种保护方式中,自定义的ClassLoader是非常关键的类。由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克,那么被加密的类也很容易被解密。
3.转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法。
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术。
如何防止java文件被反编译
无法防止。.class文件的标准是公开的,无法防止别人反编译你的代码。
你顶多可以用代码扰乱工具扰乱你的代码,这样反编译的代码就难以阅读。比如可以试试用proguard来扰乱(“加密”)和反扰乱(“解密”)你的代码。
但是java有那么多很不错的代码阅读分析工具,即使你用了扰乱器,也不能保证代码的安全。
有哪些防止反编译 Java 类库 jar 文件的办法
java本就是开源的,你加密感觉怪怪的。
想防止反编译,最简单的方法就是你可以向Jar注入无效代码。比如建一个类,建一个没有意义的方法private class Invalid{ },然后输出为jar。用解压缩软件打开这个jar,以文本方式找到那个类的class,然后将那个方法名的一个字母删掉,然后更新入压缩文件中。用jd-gui反编译提示错误。这种方式不能用于android中。
还有种方法就是混淆代码,加密class和高级加密class,方式比较复杂,可以自行百度。
求安卓加密,安卓应用加密方式?
爱加密(;v=2 )独创六种加密服务
1.人工审核加密
人工审核加密是对开发者上传的应用进行安全人工审核后再提供加密服务,以保证APP安全。登陆爱加密官网上传APK即可,适用于所有基础加密的用户,加密项目包含所有的基础加密项目。
2.后台自动化加密
对某些人工审核过的可信赖的用户,爱加密提供后台自动化加密,无需再次审核,通过后台自动审核,一键完成上传、加密的过程,整个过程不超过5分钟。
3.云加密(API自动加密接口)
云加密是利用爱加密提供的API自动化加密接口进行加密,可以为企业提供自动化加密平台的所有功能。加密自动化、高效是爱加密云加密接口的最大特色。用户获取该接口后,进行二次开发,十分钟集成自有开发环境,方便企业完成从打包、测试、加密、上传市场一系列过程,实现一键化操作,完成一键化云加密。
4.PC加密工具
爱加密PC助手是爱加密开发的适用于Windows系统的PC软件客户端的桌面加密工具,安全、稳定、高效、快速、简单、易操作是该系统最大的优势。支持批量上传加密包、自动化加密、加密记录查询、自动邮箱提醒加密结果等功能的独立加密平台,由爱加密官方授权用户账号即可使用。
5.本地加密系统
对大型企业,爱加密提供独立的企业专属服务器和加密系统,并协助企业进行服务器环境部署与系统搭建,实现本地局域网独立加密,不需要通过爱加密服务器,企业放心使用。
6.so文件本地加密工具
对某些对so文件安全特殊要求的企业,爱加密提供专业的so文件加密系统,包括提供独立专属的服务器,搭建本地加密服务器环境部署与自动加密服务系统,专业提供so文件本地加密保护。
北大青鸟设计培训:让Java代码免受bug困扰?
Java编程语言的人气自然无需质疑,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。
不过在编写代码时,bug永远是困扰每一位从业者的头号难题。
在今天的文章中,java课程将分享五贡最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。
原则一:不要依赖初始化在Java中,开发者常常依赖构造函数进行对象初始化。
不过这其实是一种常见误区。
我们完全可以在无需调用构造函数的情况下,通过多种方式实现对象分配。
下面来看几种常用方式:? 大家可以将所有变量声明为私有。
要访问该类外的对象,大家可使用GET与SET方法。
? 对每个对象,编写一个新的私有boolean变量并对其进行初始化。
? 编写一个非构造函数类,其将确保每个对象会在接受调用之前进行初始化。
原则二:保护类、方法与变量在代码当中,类、方法与变量分为私有与公共两类。
私有类无法轻松进行访问,这使其成为代码中的高安全性点。
不过公共方法与变量则易于方法,也因此常常成为攻击突破口。
因此,请尽可能限制其范围。
请记住,只在必要时开放类、方法与变量。
原则三:永远对范围进行预定义大多数开发者完全依赖于软件包自身的范围设定,事实上我们应当坚持对代码范围进行预定义。
很多类本身并非完全封闭,这意味着攻击者能够对其施以攻击。
黑客可以利用单一漏洞插入自己的类,进而从代码中提取敏感信息。
JVM在默认情况下即不会封闭,不过允许大家在该软件包内进行类封闭。
原则四:避免使用内部类一般来讲,开发者会在同一软件包内其它类需要时使用内部类。
这些内部类通常可供同一软件包内全部类进行访问,由此可能引发的问题在预定义代码范围部分已经提到。
因此,同样请仅在必要时使用内部类。
原则五:确保类不可克隆Java提供一项功能,用于在需要时对自有类进行克隆。
然而这项功能往往被黑客所利用,其能够使用java.lang.Cloneable从代码中复制代码实例并窃取必要信息。
如何对java的class类进行加密
可以使用Virbox Protector Standalone 加壳工具对java的class类进行加密,支持各种开发语言的程序加密。可防止代码反编译,更安全,更方便
产品简介
Virbox Protector Standalone提供了强大的代码虚拟化、高级混淆与智能压缩技术,保护您的程序免受逆向工程和非法修改。
Virbox Protector Standalone 将被保护的程序代码转换为虚拟机代码,程序运行时,虚拟机将模拟程序执行,进入和离开虚拟机都有高级代码混淆。虚拟机配合代码混淆可以达到很好的保护效果,尤其是开发者的私有逻辑。高级混淆利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。应用程序的解压缩含有动态密码,让一切自动脱壳工具失效,有效的阻止.Net、PE 程序的直接反编译。
特点
多种加密策略:代码虚拟化、高级混淆、智能压缩
性能分析:智能分析引擎,一键分析各个函数模块调用的次数
支持多种开发语言:多种开发语言加壳支持
源码级保护:保护到汇编级别,c#保护IL级别
免费更新:免费版本升级
标题名称:java代码虚拟化保护,java虚拟机机制
分享链接:http://myzitong.com/article/hchegj.html