首先,需要大家端正一下学习态度-也就是对于破 解的态度.每一个有一定修为的软件破 解者,也就是CRACKER,都很清楚,我们破 解掉软件的序列号,功能限制,时间限制等等东西都不是最终的目的,一个真正的CRACKER追求的是一种技术上的极致,一种对技术的无限渴望.不允许软件作者在它的软件里面留下一个充满未知的黑盒子,所以要分析这个软件,看看作者到底是如何实现软件的保护,这种保护机制有何优缺点,有什么值得借鉴之处.
最出色的保护体制一定会用到最出色的技术,或者在算法上,或者在编程思想上,我们通过分析,研究,最终将它们搞清楚,那么我们就可以把这些心得用到自己编写的软件中去.很多CRACKER最终之所以都成为了优秀的PROGRAMMER或是优秀的系统分析员,就是因为如此.所以,CRACKING有个更加专业的名字:"Reverse Engineering",译成中文就是"逆向工程".
当然,不可否认,某些时候,对软件实施"逆向工程"的确会影响到软件开发者的个人利益.由于这种影响的存在,很多开发者对于CRACKER们可以说是抱有一种"仇视"的态度,其实细究之下,完全没有必要.真正对软件开发者造成严重损害的,不是CRACKER,而是无耻盗用CRACKER劳动成果的盗版商人,这些盗版者,不仅严重损害了开发者的利益,也严重损害了CRACKER的利益和声誉,软件作为程序员知识的结晶,其产权的概念当然和其他产品有所区别,知识的传播不应该有任何的阻碍,也不会有任何真正的阻碍,在信息化的时代,掌握知识固然重要,可是掌握获取知识的方法才是重中之重.CRACKER所使用的逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术,其重要性可想而知.
CRACKER的成长之路
说"逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术",似乎过于抽象了一点,我们可以从一个CRACKER的大致成长之路略窥一下CRACKING的全貌:
1.最初级的阶段.当然就是很简单的破 解序列号,时间限制,功能限制之类的工作,大部分的人都是因为受不了很多共享软件的诸多限制而开始研究破 解的.
2.当你掌握了最基本的技术后,就可以用它来分析,解决日常使用电脑所碰到的各种问题.这个时候,本来目的一致的人们会渐渐的产生了一些分歧,各自发现了自己感兴趣的领域,比如侧重于操作系统原理方面的朋友可以自己修改一些软件,让其更加适合自己使用,,如修改软件的菜单,快捷键,或者给软件增加一些自己需要的功能,比如打印等.而侧重于软件算法方面的朋友,则会学到更多的软件加密算法,侧重于加壳方面的朋友,会碰到更多的壳,可以学习到更多的壳方面的知识.总之,走到这一步,已经大致的分出了方向.
3.如果你有足够的毅力,时间,自学能力和天赋,就能越过第二层,达到大师的境界了.这个层次的CRACKER有个最大的共同点-都是优秀的PROGRAMMER,也就是说都有很深的编程功底,这就充分的体现了逆向工程技术的巨大作用.当然,编程只是最基本的要求,其他方面,每个人都会有自己独特的,理解特别深的方面,如系统的内核,密码学的算法等等.
接下来,我们就需要了解一下学好逆向工程技术,到底需要做出怎样的努力呢?
首先,最重要的是毅力,一种对技术的狂热.兴趣是最好的老师,如果你没有足够的兴趣作为动力支持,面对着大篇幅的汇编代码,很容易就会感到枯燥,厌烦,这样就永远都学不好CRACKING,国内CRACKING界的元老人物jojo在<看雪论坛精华3>的前言上就曾经说过:"让我们搞清楚作为一名CRACKER最需要具备的基本条件,其实那并不是扎实的汇编功底和编程基础,你可以完全不懂这些,CRACKING的秘诀就是勤奋+执着!记住并能做到这两点,你一样可以变得优秀."也许在纸面上说毅力和执着会让很多人觉得这很不值得一提,可是有些事自己不亲自常试过,就永远都不会知道其中的滋味.我曾经调试一个BlowFish算法保护的程序,那是我第一次接触密码学的保护体系,光其中的中间运算结果,重要地址断点,运算过程就差不多写了一个笔记本,整整10个小时都在不停的调试,看到的都是无边无际的汇编代码,如果不是后来查找到了BlowFish算法的相关资料,我还不知道要跟踪多久,而BlowFish算法算是密码学里面比较简单的算法,如果你碰到一个WinRAR,CloneCD等使用椭圆曲线密码算法的加密体系,那其中的艰难困苦就更加难以想象了.所以,要成为一个优秀的CRACKER,一定要有超人的耐心和执着精神.
最出色的保护体制一定会用到最出色的技术,或者在算法上,或者在编程思想上,我们通过分析,研究,最终将它们搞清楚,那么我们就可以把这些心得用到自己编写的软件中去.很多CRACKER最终之所以都成为了优秀的PROGRAMMER或是优秀的系统分析员,就是因为如此.所以,CRACKING有个更加专业的名字:"Reverse Engineering",译成中文就是"逆向工程".
当然,不可否认,某些时候,对软件实施"逆向工程"的确会影响到软件开发者的个人利益.由于这种影响的存在,很多开发者对于CRACKER们可以说是抱有一种"仇视"的态度,其实细究之下,完全没有必要.真正对软件开发者造成严重损害的,不是CRACKER,而是无耻盗用CRACKER劳动成果的盗版商人,这些盗版者,不仅严重损害了开发者的利益,也严重损害了CRACKER的利益和声誉,软件作为程序员知识的结晶,其产权的概念当然和其他产品有所区别,知识的传播不应该有任何的阻碍,也不会有任何真正的阻碍,在信息化的时代,掌握知识固然重要,可是掌握获取知识的方法才是重中之重.CRACKER所使用的逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术,其重要性可想而知.
CRACKER的成长之路
说"逆向工程技术就是一门教你如何从别人的软件中学习先进的软件设计思想的技术",似乎过于抽象了一点,我们可以从一个CRACKER的大致成长之路略窥一下CRACKING的全貌:
1.最初级的阶段.当然就是很简单的破 解序列号,时间限制,功能限制之类的工作,大部分的人都是因为受不了很多共享软件的诸多限制而开始研究破 解的.
2.当你掌握了最基本的技术后,就可以用它来分析,解决日常使用电脑所碰到的各种问题.这个时候,本来目的一致的人们会渐渐的产生了一些分歧,各自发现了自己感兴趣的领域,比如侧重于操作系统原理方面的朋友可以自己修改一些软件,让其更加适合自己使用,,如修改软件的菜单,快捷键,或者给软件增加一些自己需要的功能,比如打印等.而侧重于软件算法方面的朋友,则会学到更多的软件加密算法,侧重于加壳方面的朋友,会碰到更多的壳,可以学习到更多的壳方面的知识.总之,走到这一步,已经大致的分出了方向.
3.如果你有足够的毅力,时间,自学能力和天赋,就能越过第二层,达到大师的境界了.这个层次的CRACKER有个最大的共同点-都是优秀的PROGRAMMER,也就是说都有很深的编程功底,这就充分的体现了逆向工程技术的巨大作用.当然,编程只是最基本的要求,其他方面,每个人都会有自己独特的,理解特别深的方面,如系统的内核,密码学的算法等等.
接下来,我们就需要了解一下学好逆向工程技术,到底需要做出怎样的努力呢?
首先,最重要的是毅力,一种对技术的狂热.兴趣是最好的老师,如果你没有足够的兴趣作为动力支持,面对着大篇幅的汇编代码,很容易就会感到枯燥,厌烦,这样就永远都学不好CRACKING,国内CRACKING界的元老人物jojo在<看雪论坛精华3>的前言上就曾经说过:"让我们搞清楚作为一名CRACKER最需要具备的基本条件,其实那并不是扎实的汇编功底和编程基础,你可以完全不懂这些,CRACKING的秘诀就是勤奋+执着!记住并能做到这两点,你一样可以变得优秀."也许在纸面上说毅力和执着会让很多人觉得这很不值得一提,可是有些事自己不亲自常试过,就永远都不会知道其中的滋味.我曾经调试一个BlowFish算法保护的程序,那是我第一次接触密码学的保护体系,光其中的中间运算结果,重要地址断点,运算过程就差不多写了一个笔记本,整整10个小时都在不停的调试,看到的都是无边无际的汇编代码,如果不是后来查找到了BlowFish算法的相关资料,我还不知道要跟踪多久,而BlowFish算法算是密码学里面比较简单的算法,如果你碰到一个WinRAR,CloneCD等使用椭圆曲线密码算法的加密体系,那其中的艰难困苦就更加难以想象了.所以,要成为一个优秀的CRACKER,一定要有超人的耐心和执着精神.
回复Comments
作者:
{commentrecontent}