且行且远
分类: 逆向手札 由 ssfighter 于 2006年8月22日 发表

很老的一篇文章了,但现在读起来仍然很有意义,转载过来。

走近0day

首先,需要大家端正一下学习态度-也就是对于破解的态度.每一个有一定修为的软件破解者,也就是CRACKER,都很清楚,我们破解掉软件的序列号,功能限制,时间限制等等东西都不是最终的目的,一个真正的CRACKER追求的是一种技术上的极致,一种对技术的无限渴望.不允许软件作者在它的软件里面留下一个充满未知的黑盒子,所以要分析这个软件,看看作者到底是如何实现软件的保护,这种保护机制有何优缺点,有什么值得借鉴之处.

最出色的保护体制一定会用到最出色的技术,或者在算法上,或者在编程思想上,我们通过分析,研究,最终将它们搞清楚,那么我们就可以把这些心得用到自己编写的软件中去.很多CRACKER最终之所以都成为了优秀的PROGRAMMER或是优秀的系统分析员,就是因为如此.所以,CRACKING有个更加专业的名字:”Reverse Engineering”,译成中文就是”逆向工程”.

当然,不可否认,某些时候,对软件实施”逆向工程”的确会影响到软件开发者的个人利益.由于这种影响的存在,很多开发者对于CRACKER们可以说是抱有一种”仇视”的态度,其实细究之下,完全没有必要.真正对软件开发者造成严重损害的,不是CRACKER,而是无耻盗用CRACKER劳动成果的盗版商人,这些盗版者,不仅严重损害了开发者的利益,也严重损害了CRACKER的利益和声誉,软件作为程序员知识的结晶,其产权的概念当然和其他产品有所区别,知识的传播不应该有任何的阻碍,也不会有任何真正的阻碍,在信息化的时代,掌握知识固然重要,可是掌握获取知识的方法才是重中之重.CRACKER所使用的逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术,其重要性可想而知.
CRACKER的成长之路

说”逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术”,似乎过于抽象了一点,我们可以从一个CRACKER的大致成长之路略窥一下CRACKING的全貌:

1. 最初级的阶段.当然就是很简单的破 解序列号,时间限制,功能限制之类的工作,大部分的人都是因为受不了很多共享软件的诸多限制而开始研究破 解的.
2. 当你掌握了最基本的技术后,就可以用它来分析,解决日常使用电脑所碰到的各种问题.这个时候,本来目的一致的人们会渐渐的产生了一些分歧,各自发现了自己感兴趣的领域,比如侧重于操作系统原理方面的朋友可以自己修改一些软件,让其更加适合自己使用,,如修改软件的菜单,快捷键,或者给软件增加一些自己需要的功能,比如打印等.而侧重于软件算法方面的朋友,则会学到更多的软件加密算法,侧重于加壳方面的朋友,会碰到更多的壳,可以学习到更多的壳方面的知识.总之,走到这一步,已经大致的分出了方向.
3. 如果你有足够的毅力,时间,自学能力和天赋,就能越过第二层,达到大师的境界了.这个层次的CRACKER有个最大的共同点-都是优秀的PROGRAMMER,也就是说都有很深的编程功底,这就充分的体现了逆向工程技术的巨大作用.当然,编程只是最基本的要求,其他方面,每个人都会有自己独特的,理解特别深的方面,如系统的内核,密码学的算法等等.

接下来,我们就需要了解一下学好逆向工程技术,到底需要做出怎样的努力呢?

首先,最重要的是毅力,一种对技术的狂热.兴趣是最好的老师,如果你没有足够的兴趣作为动力支持,面对着大篇幅的汇编代码,很容易就会感到枯燥,厌烦,这样就永远都学不好 CRACKING,国内CRACKING界的元老人物jojo就曾经说过:”让我们搞清楚作为一名CRACKER最需要具备的基本条件,其实那并不是扎实的汇编功底和编程基础,你可以完全不懂这些,CRACKING的秘诀就是勤奋+执着!记住并能做到这两点,你一样可以变得优秀.”也许在纸面上说毅力和执着会让很多人觉得这很不值得一提,可是有些事自己不亲自常试过,就永远都不会知道其中的滋味.我曾经调试一个BlowFish算法保护的程序,那是我第一次接触密码学的保护体系,光其中的中间运算结果,重要地址断点,运算过程就差不多写了一个笔记本,整整10个小时都在不停的调试,看到的都是无边无际的汇编代码,如果不是后来查找到了BlowFish算法的相关资料,我还不知道要跟踪多久,而BlowFish算法算是密码学里面比较简单的算法,如果你碰到一个WinRAR,CloneCD等使用椭圆曲线密码算法的加密体系,那其中的艰难困苦就更加难以想象了.所以,要成为一个优秀的CRACKER,一定要有超人的耐心和执着精神.

其次,就是极其扎实的汇编功底和系统编程的知识.CRACKING是一件很低阶的事情,不像VB, Delphi等RAD工具,傻瓜似的拖动一下就能绘出一个窗口,在一个CRACKER的眼里,任何事件,都要深入到汇编级的了解才行,一个窗口,要彻底的分析它的消息响应函数,一个算法,要从寄存器和存储器的运算级别来理解清楚.可以想象,一个2-3M的软件,用VC开发都要几个月的艰苦劳动,如果要在没有源代码的情况下,完全通过汇编代码的阅读,搞清楚它的运作机制,没有扎实的汇编和系统知识作为坚强的后台支持,是完全不可想象的事,对于知识的积累,每一个学过计算机的朋友都清楚,那事没有任何捷径的,完全凭日常的留心和努力,厚积才能薄发.当你的基础知识扎实以后,从事任何与计算机相关的研究,都是很轻松的事情.

前面的两点,都是很”形式”的大道理,大家也许都觉得抽象了一点,不用担心,在日后的实践中,有很多的机会和时间让你慢慢体会个中真谛.

工欲善其事,必先利其器.逆向工程作为一个极其专业的领域,不光其指导思想与众不同,所使用的工具也是极具特色,和其他的领域差异巨大,要成为一个专业的 CRACKER,一定要熟练掌握常用的一些工具,最出名的TRW,Soft-Ice,W32Dasm都是大路货了,接触电脑多一点的人,或多或少都应该听过这些名词,这些可以说是CRACKER们最基本的工具.可是不要认为会用这几个工具就足够了,入门之后,你会发现大堆的从来没有见过甚至没有听过的工具等着你去学习.CRACKER的工具有个普遍的特色-小而精,着眼于很小的切入点,不要看他们块头小就不以为然,很多时候,就是那些小东西可以帮上你的大忙,所以,对于工具的了解一定要全面,我在以后的”密界寻踪”栏目中,会专门为大家介绍CRACKER所需要的各种工具,希望能在最短的时间内,让大家获取最多最有用的CRACKING知识.
CRACKING的产生,发展

任何一门学科,都有其产生,发展的过程,逆向工程当然也不会例外,现在CRACKING界内部比较认同的时间划分方法是以操作系统的变化为根据的,具体的说,分为如下几个阶段:

1.

萌芽:

20世纪70-80年代,DOS普及之前.那时,CRACKING完全是一种个人的行为,由于通信手段和计算机普及率的限制,CRACKING完全是一些电脑元老级人物业余的休闲,而且那时,”软件保护”这个概念完全没有成型,保护体系极其简单,逆向工程的任务大部分是在学习人家的编程思想,而且那时的逆向工程技术主要是应用在单片机,苹果机编程领域,而且几乎没有任何文献流传下来,现在已很难考证那个时代的技术发展水平和研究成果了.
2. 发展:
………..

国际的crack组织

crack技术发展到如今,全世界涌现出了不少著名的破 解组织和个人,其中以Core,TMG,DAMN三个组织技术最高,在crack界声誉也是最高。下面简单介绍一下这三个组织。

Core——Chanllenge of Rever Engineering CRACK!

成立于1997年6月。创办者是eGIS和hambo。eGIS是全世界最著名的cracker(请注意后面没有“之一”),身份一直神秘。据我猜测他有可能是华人,因为他做的acdsee 2.4的注册机用的vc++5.0中文版编译。据说他曾经在1997年的时候花了3400美元买了一套正版的watcom c(仙剑奇侠传就是用这个编写的)研究。那时他大概17~18岁。eGIS做出了很多大家公认超级难度的注册机——AcdSee 3.0,WinRAR 2.8 Beta2等等,对于密码学有着深厚的研究和敏锐的嗅觉。当初,WinRAR就是被他看出来椭圆算法的实现上有个漏洞而做出来的。而AcdSee 3.0全世界据说只有他一个人做出了注册机。我还看过一篇文章,说“超级兔子”系列软件可以用eGIS作为万能注册名(就是可以随便输入注册码都可以成功)注册,不过那是1~2年前的事情了,超级兔子升级了这么多的版本,估计现在不行了,由于他的带领,Core也差不多成为了全世界cracker们的 Core(核心)了。

TMG——The Millenium Group

2000 年新成立的组织。由于其中有全世界最著名的cracker——tHE EGOiSTE而名声鹊起,成为可以与core比拼的破解组织。tHE EGOiSTE也是一位优秀的密码学研究者。他做的RsaTools和DSATools在破解和研究RSA以及DSA算法上,都显示出卓越的功效。另外, TMG还做出过CloneCD的注册机,堪称绝响。以前大家认为CloneCD用的是单纯的椭圆算法,最后TMG研究出来它还用了TAE算法,并且为这两种算法都写了相应的注册机,可见起成员功力之深厚。TMG对其成员要求极度严格,一个月差不多要求写出100个注册机——也就是一天三个,够恐怖!难怪他们能够后发制人,跻身“三足”之列。

DAMN

这个组织全称就叫DAMN。该组织集中精力研究密码学,基本上所有成员都对密码学有很深的研究。Recca曾经写出过RSA1024的注册机,虽然利用了漏洞,不过功力仍然不能小看。其首领ivanopulo更加是个中高手,令人难望其项背。该组织所做的KeyGen(注册机)和Patch(程序补丁)每一个都是精品,他们从来不以发布破解的数量来赢得自己的名声,只是集中精力研究大家公认的难题,取得一个又一个辉煌的成绩,进而得到全世界的认可。

除了上述公认的三强外,破 解界还有Amok,TNT,Team Cracking组织,在此就不再赘述了。

当然,除了这些组织,还有很多独立的不加入任何组织的优秀cracker,他们坚信crack只能是一种个人的探索行为,一旦成立或者加入了什么组织,就违背了crack最初的精神。这些独行侠们只在自己感兴趣的bbs上崭露才华,而且大都身份神秘。

除了组织和个人之外,当然还需要有著名的网站和空间给他们提供一个崭露自己的舞台。全世界最著名的逆向工程技术性网站就是架在woodmann上面的 Fravia,最初由cracker的开山鼻祖+ORC建立。 +ORC以其18篇“How To Crack……”奠定了其cracker中的鼻祖地位。那18篇文章就是如今读来,仍然给人启迪不小,国内著名vb和delphi研究者小楼曾坦言从中获益良多,如今还常常翻阅,温故知新。+ORC其人也是如迷如幻,现金还无人得知他是何方神圣。他自称The Red Crack,所以,很多人猜测他是苏联时期的东欧那边的人。现在Fravia的版主是+tsehp,主要是收集Fravia论坛里的精华文章,大部分都是 e文,所以大家注意了,赶快去补补e文呦!经过这么多年的积累,Fravia已经可以算是博大精深了。如果你能看完Fravia里的文章,并且大部分理解,那你也差不多成了国际的一流选手了!

除了Fravia以外,还有一个经典的逆向工程技术性的网站:CrackZ’s Reverse Engineering Page,这个站点是CrackZ的个人主页,里面内容丰富,分类有加密狗,时间限制,Visual Basic,注册机源代码收集,密码学基础。很多都是CrackZ的原创精品,另外也有一部分其他人的经典作品。想进一步提高自己水平cracker们,不能不去看看这个站。不过最近由于一些没有公开的原因,CrackZ把他的网站暂时关闭了,不能访问。据估计一段时间以后才能恢复。网上有人发布过他的网站的打包,总共200多M,有兴趣的朋友不妨去收索一下。
原文后面还有介绍国内破解组织的,过时了,而且国内的东西大多了解的比较多,就不贴了:)



发表评论

昵称:  (必须)
邮件:  (必须)
网址: 
评论: