据说JRebel是一款JVM插件,可以实现class热加载,减少重部署次数,极大提高开发效率。昨天下了一个最新版本,带30天试用的license,用神器jd-gui.exe分析了一下,发现可以破解,遂破之。
现在分享一下攻克的要点:
1.com.zeroturnaround.licensing.UserLicense:这个类implements Serializable,实际上jrebel.lic文件
就是它序列化的结果。所以我们自己同样可以依照它生产自己的lic文件,修改license参数即可,比如时间,限制等。
但是这个class有一个public byte[] getSignature()方法,是获取签名信息的,我们可以查找哪些地方调用了这个
方法,再来进一步处理。
2.com.zeroturnaround.javarebel.pS:很幸运找到这个类中有两个返回值为boolean的方法调用了签名的验证,
所以直接上ASM或javassist修改ByteCode,在方法开头插入 if(true) return true; 即可。
PS:JRebel是一款商业软件,这里就不直接上破解后的jar了,因为太简单了,其强度还比不上国内某些作品,只是
说明一下jrebel-4.0.3-standalone版的jar包是没签名的,处理起来方便,eclipse的plugin版的所有jar包都是
签名的,需要剔除掉这些签名信息,有点麻烦。