快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Java的破解和反破解之道

java字节码能够很轻易被反编译大家都晓得啦,今天下午我为了得到一个心仪已久的jbuilder opentools(昨天1.0 Released,新鲜出炉!但只能用14天,这怎么行,于是我不惜放下其他工作,研究了一把该软件加密方式的破解和反破解,结合以前的一些经验,作文一篇与大家共飨,并不是鼓励大家......

  破解之道:



  对一些提供license.key(包含授权信息的加密文件)的软件,一般这种文件会采用DES,RAS和CRC校验而且一般是二进制的(即使有时输出成BASE64编码),直接修改文件是浪费时间的,你可以先反编译通过阅读源程序来探究解密过程,假如过程是可逆的,那么你自己实现一个加密过程,可以很轻易的生成你自己想要的license key;假如过程不可逆也不是就搞不定了,有些强度不大的加密算法还是可以用暴力破解法来搞定,还有一种情况是对数字加密(一般指过期时间)假如你能修改这个过期时间那么你就可以多用一会儿了,用数学方式描述一下:

  假设集合 X 是明文包含的元素集合,Y是X经过算法后的映射,包含密文元素,,假如有存在两个算法A和B,能使得{ Y -A-> X } = { Y -B-> X },A算法可逆,但B算法是不可逆的,生产方用A的逆算法加密授权信息(X:String) 到(Y:byte[]),并在软件中用B算法解密,这样你就搞不定了,但假如集合X的元素是有限的,假设只有0-9 (new Date().getTime()格式),那么算法B就称为不可逆但不可靠的,因为你通过一个样本(一般都会给你评价版的license啦!),是可以得到某些Y集合中元素在X集合中的逆映射的,这样你可以直接用这张映射表来修改license了...

  反破解之道:

  假如是做产品或提供演示程序,加密还是有好处的,加密的软件可以用上面提到的JODE,一般都是对编译好的class文件进行扰乱,因为并不是所有的符号都需要扰乱,假如你开发的是一个类库,或者某些类需要动态装载,那些公共API就必须保留符号不变,这样别人才能使用你的类库。先编写脚本对那些需要保留的符号名称进行配置,某些扰乱器能够调整字节码的顺序,使反编译更加困难。假如你用的代码扰乱器能保证别人不能通过反编译来修改或代替你的class,那么你还得注重不要用不可靠的加密算法。我自己写了一个不可逆且可靠的算法,正在申请专利中....




返回类别: 教程
上一教程: Java入门及faq__1(4)
下一教程: Java学生成绩治理系统源代码

您可以阅读与"Java的破解和反破解之道"相关的教程:
· Java的破解和反破解之道
· java程序破解天意商务系统后台帐号
· Java语言编码规范(Java Code Conventions)
· 通过java.net.Socket 类抓取网页内容
· Mini Java编译器(三)
    微笑服务 优质保证 索取样品