Java的破解和反破解之道[Java编程]
本文“Java的破解和反破解之道[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的破解和反破解之道[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |