防止Java开发出来的程序被别人反编译有很多种方法,下面给你介绍几种:
1,隔离Java程序
最简单的方法就是让用户不能够访问到JavaClass程序,这种方法是最根本的方法,具体实现有多种方式例如,开发人员可以将关键的JavaClass放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件这样黑客就没有办法反编译Class文件目前,通过接口提供服务的标准和协议也越来越多,例如HTT
P,WebServic
e,RPC等但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序
2,对Class文件进行加密
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码,序列号管理相关的类等在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中这些类的解密可以由硬件完成,也可以使用软件完成
3,转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法因为本地代码往往难以被反编译开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用
4,代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂,晦涩的,因此反编译人员很难得出程序的真正语义从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译
不同保护技术比较希望能给大家带来参考:
由于Java字节码的抽象级别较高,因此它们较容易被反编译下面介绍了几种常用的方法,用于保护Java字节码不被反编译通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点
1.隔离Java程序
最简单的方法就是让用户不能够访问到JavaClass程序,这种方法是最根本的方法,具体实现有多种方式例如,开发人员可以将关键的JavaClass放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件这样黑客就没有办法反编译Class文件目前,通过接口提供服务的标准和协议也越来越多,例如HTT
P,WebServic
e,RPC等但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序
2.对Class文件进行加密
为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码,序列号管理相关的类等在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中这些类的解密可以由硬件完成,也可以使用软件完成
在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的ClassLoader)自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中在这种保护方式中,自定义的ClassLoader是非常关键的类由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标如果相关的解密密钥和算法被攻克,那么被加密的类也很容易被解密
3.转换成本地代码
将程序转换成本地代码也是一种防止反编译的有效方法因为本地代码往往难以被反编译开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作不过对于一些关键的模块,有时这种方案往往是必要的为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改如果签名检查通过,则调用相关JNI方法
4.代码混淆
代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)但是混淆后的代码很难被反编译,即反编译后得出的代码是非常难懂,晦涩的,因此反编译人员很难得出程序的真正语义从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前有些人正在研制反混淆的工具但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译下面我们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术
有现成的jar包加密工具,推荐使用混淆器工具proGuard对jar包加密
或者Java代码混淆和加密--Jocky
具体使用方式可以百度
只给编译后的.jar文件,不给.java文件
不过要说明的是,java因为是字节码,所以没有办法防止被反编译
最多也就是做一下代码混淆,比如把方法或变量名改成无意义的名称,或者加一些完全无用的代码进去,让恶意攻击的人难以看懂
使用VirboxProtector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密VirboxProtector支持这两种文件格式加密,并且加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝
两种加密方式
War包加密
当你的项目在没有完成竣工的时候,不适合使用war文件,因为你的类会由于调试之类的经常改,这样来回删除,创建war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就相当于一个web应用程序;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用
Jar包加密
在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可Jar包有已知的jar包及自己导出的jar包
加密流程
我们如何对已知的jar或者自己导出jar包做加密并给别人使用呢?下面是对简单的加密流程介绍
War包加密流程
1,打包War包
2,解压War包
3,对java.exe加壳
4,对class文件加密
Jar包加密流程
1,对java.exe加壳
2,对Jar文件进行加密
还没有评论,快来抢沙发吧!
最新发现
相关资讯
宫崎骏word,宫崎骏大概简历总结性的
1941-1969年宫崎骏生于1941年1月5日,四兄弟中排行第二他们家原本住在东京都文京区,后来二次大战因战时疏散,举家迁往宇都宫市和鹿沼市住鹿沼市的伯父经营了一家飞机工厂,宫崎骏的父亲在那间工厂担任主管宫崎骏的母亲是
2024-05-29 23:25:07
零售价百分比算法,百分比计算
消费者价格指数(英文名称:consumerpriceindex缩写:CPI)指的是衡量所选定的一篮子消费品购买价格的指数计算指数时,每种商品的权数依据1982-1984年间该商品在城市消费者生活开支中所占的份额来确定它是反映与居民生活有关
2024-05-29 23:24:15
怎么设置陌陌在线,咋样让陌陌一直在线
这个能的,我一直以为只要隐身了就不会被人看到了,可是我无意间发现在朋友的手机上显示我隐身,但是其他陌生人我就不知道了
2024-05-29 23:24:02
索尼x8000c设置,索尼kd-49x8000c怎样设置wifi
先把手机跟索尼电视8000c(需要连接小米盒子之类的电视盒子)连接到同一wifi,然后在手机上下载沙发管家并安装好,如果你的手机和小米盒子是在一个wifi网络里面,点击这个图标时就能看到下面出现一个索尼电视kd-55x8000c的设
2024-05-29 23:21:29
炒股半年后的收益算法,请问如何计算股票买卖之后赚多少钱
首先你的成本包括买卖需要支出的手续费和税,目前,一般证券公司的网络交易手续费会低一些,电话委托和柜台委托基本是一样的,目前0.2%,它是根据交易的成交金额计算的.譬如:你买某股票,其成交价格是10元/股,
2024-05-29 23:18:36
新闻热榜
热门游戏
精彩专题