今天看了一下,本站以最少的发帖量排在博客园第40位,比较难得了。
好长一段时间来都很少发帖了,也有一些七七八八的原因:工作变动、平时工作以java为主、对研究.net控件也少了兴趣等,但是有时候突然心血来潮看看一些新的以前研究过的控件,版本升级了,功能也提升了,但是对很多公司来说,他们的注册机制都没有太大的变化,例如Dundas ,Dotnetcharting,intersoft,cuteEditor,包括ComponentArt等等,所以跟随着版本升级来发布补丁、破解也不是当初建立blog的初衷,主要还是就一些控件的注册思路做研究罢了。其实以前发的一些帖子介绍的方法基本上都能解决大部分的控件的注册问题了,如果有心,其实也并不难。
有时候看一些控件的处理思路也是很有意思的,譬如:Data Dynamics的报表控件ActiveReports for .NET,它将核心的注册程序编译成一个assembly dll,然后将dll文件以二进制的形式保存为一个byte[],然后动态载入,所以当初研究这个控件是多次拿起,多次放下,辗转多次最后才发现它的处理思路,目前为止,还没有看到其他的控件用到这种思路的,比较有新意。
像ComponentArt的控件,现在的混淆程度基本上很难分析它的算法机制,尽管算法有些复杂,但是在他的早期版本混淆还没有那么厉害,还是能够分析出来注册机的,记得本站刚建立时就发过注册码,后来在2.1的版本中,估计他们公司的开发人员在网上发现了这些注册码,将把这些注册码特意配置加到一个xml配置文件中,只要是这些注册码,就不能注册,但是算法呢还是没有调整过,也是很有意思了,能够引起吸引赖昌星、高山等贪官作为逃跑目的地国家的软件公司的注意,比较难得了,呵呵。其实这样的情况别的软件也碰到过,例如IntelliJ IDEA 这个有名的java ide在一个大概05年11月左右公布的版本中就没有对关键的license处理的程序进行混淆,结果利用jad就能很轻松的分析出了其中的注册机制,但是很快他们就发布了一个新的版本,后来的就都进行混淆了,难度也相应提高了。
很多软件都利用RSA这种不对称加密、签名的机制实现控件的注册,但是选取的key都太简单了,结果很轻松就被一些高手破解、发布注册机,例如IntelliJ IDEA ,它的key简单的用一个较小的质数作为key,利用RSATool等分解大质数的工具基本上都不能构成真正意义上的保护,但是像JIRA这样的bug管理软件选取的key足够安全了,不知什么原因,它的private key却在互联网上泄漏了出来,原因或许是被hacker暴力破解,或许其他原因了,所以尽管选择了好的注册思路,保护好关键的代码、key也是很重要的。
也有一些软件,核心算法很复杂,但是调用、判断的地方很简单,也算是留下了漏洞,这样的软件往往被简单的破解,注册机也懒得写了。
有的软件,例如Xceed的控件,看起来它的程序逻辑很简单,有一段算法有不可逆、不确定性,对于这个控件我一直没有找到解决的办法,但是网上就有一些国外的高手写的注册机,轻松得很,这时候不得不感慨天外天,人外人了。
在java源程序编译成class后,有时候用jad不一定能够完全无损的反编译后修改,但是在java中有一些免费的软件可以用来直接操作字节码,用程序就可以修改class里面的方法,例如将private改为public,重写method等,这样的软件有asm,javassist等,甚至还有一个kopi的kjc suite可以直接反编译为自定义的类汇编格式,然后再编译为class,这样如果要想彻底修改一个java class就很简单了,而且这种处理方法还是实现动态AOP等框架的基础。相比之下.net环境下面只有ildasm,ilasm来实现代码重构,还像至今还没有发现其他的软件可以实现类似功能,为什么就不能有一个纯.net托管代码实现的Nidlasm之类的呢?所以特别是很多软件针对ildasm混淆之后,要想从生成il文件入手来破解软件就越来越难了。
很多控件用字符串加密的方法保护,而且混淆后的变量都换成特殊字符,不可见的字符,ildasm之后的文件很难修改,我测试过,如果用editplus,ultraedit之类的编辑器打开往往保存之后不能重新ilasm,这时候notepad就是一个好软件了,随便改,保存之后通常没有大的问题。
尽管很多软件可以应对了,但是不少软件还是至今未能解决,例如sketla workflow等,这些软件将.net与win32的非托管代码混在一起,大大增强了安全性,至少超出了本站研究的范畴,这样的思路值得借鉴。
也有研究win32破解的牛人,据称能够直接修改.net framework的核心库文件,例如mscorlib.dll,就像vista都可以轻松盗版一样。用LiNing的广告来说,就是Nothing is impossible,一切皆有可能!这时候我只能说,从难易程度看,比起破解win32程序,破解.net的程序是一种享受了。
杂七杂八,算是很久以来写的最长的帖了,到此打住了。