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集合
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值