写于11/2013
昨日打开了电脑,发现我蛮喜欢折腾的一个性能分析工具出新版Yourkit2013了,于是速度下载了一个。可是还没有来得及破解,今天来破解的时候,神啊,又出个小版本了,于是下载到最新的版本。
在网上搜索了一下,好像还没人去破解这个最新版本,这个版本是11月6号发的,今天是 11月9号,那我就来尝鲜呗。
不能不说,这个新版本的防破解技术比上一个版本上了一个台阶,上次我知道它里面有几个漏洞的时候,还自言自语地说要是堵了这个漏洞我就难破解了,这次还真是印证了这句话,新的这个大版本就堵了我知道的三个漏洞的一个。其实也就是玩到JNI中去了,也就是dll中,不过不得不说,它们在这里还是有个漏洞,不然的话我一天肯定是搞不定它的。
至从上次电脑重装后啥丢了一堆自己写的小东西,现在开工破解的时候,光写一些小辅助工具都花不少时间,有人可能说,现有的这么多开源的你咋不用,我只能说,骚年,你还年轻。
为了防止破解,各种手段真是无所不用其极,从普通的混淆,到所有的变量名都Unicode成不知道是希腊还是东腊字母……(开开玩笑),从数字签名到非对称加密算法再加各种各样的移位操作,从classloader到dll..,我见过的蛮高级的玩法就是玩跨语言来阻挡破解者的脚步。
破解这个真个不同于我见到的其它几个破解,它依赖于ClassLoader+JNI,所以过程极其麻烦。
第一步解压……
第二步 采用程序进行初步二进制运算,还原到其混淆的状态,即去掉去class的加密
第三步 进行反编译,借助一些工具帮助分析关键点的含义.找到License的位置
第四步 采用自己写的一些辅助类将其破解,即jvm指令来做一些特殊的操作.
第五步 将自己写的辅助类及破解类一并通过它的一个漏洞来回写成加密的class文件
第六步 将加密的class更新并替换到jar包中,并且要将自己的辅助类也变成加密的,因为它的classLoader加载的关系
第七步,启动看结果……顺便提一下,还得当个好测试的,得把自己的电脑时钟来回调几个月看看,因为要检测到底有没有效果…………
看到下面这个图上的License expire:never,我就真的想笑,因为上一个版本的时候因为这里害我多花了半天时间才搞定。
有时候出错了,来回地折腾,太麻烦了,把ant挂上antcontrib,把它当windows下的linux shell用……。它有很多强大的task来帮助我完成这些操作…………下面是需要设置的目录中的一部分,尽力简化,但是还是需要设置几个
破解,真是个猜心思的活,破解多了,也就知道他们常见的心思,并且有些公司还自己走到误区了,所以漏洞就多了,漏洞多了咋挡住别人的破解呢……。