本来即使看雪论坛没有这么个活动,我也是一直想写些什么了。很长一段时间没有玩Crack,在技术方面已经是彻底跟不上时代了,空当了很长时间的版主,却对论坛什么贡献都没有,说得文雅一点叫尸位素餐,直接一点就是占着XX不XX。因此一直感到十分的过意不去,于是就想借这个机会说一说自己的经历与体会、对于Crack的看法等等。厚着脸皮把这块砖头抛出去,希望能够对别人有些启发,引出真正的玉来,也算是为论坛做了一点贡献吧。

再废话几句,我今年大三,刚过二十岁,正是所谓“为赋新辞强说愁”的时候,所以大家尽可以把这篇看作无病呻吟,把简简单单的一件事情掰碎了揉起来再扯得老长,仅此而已。所谓的经历与感悟,几年后再回首,也许只剩一声轻笑。不过就算轻浮也好,幼稚也罢,毕竟是我现在的真实感受,借此机会记录下来供别人和以后的自己参考,也希望过来人能给我指点一二,感激不尽。

既然是说成长的故事,当然还是要切题一下,说一下我的经历。

第一次接触Crack是在2000年左右吧,刚买电脑不久,作为一个彻头彻尾的Beginner,理所当然地认为玩电脑最风光的莫过于做一个黑客了。于是买了一张关于Hack的盗版光盘,里面的后门、端口、漏洞等等自然是看得我一头雾水,但却意外发现了台湾那些早期的Crack教程,像ErrorFree、软体蛀虫什么的,感觉很是奇妙。当时正被那些有种种限制的共享软件搞得心烦,于是就想仔细研究下。怎奈基础太差,当时我只懂一点Basic和Pascal,并且只限于能写个Hello world的程度,什么系统底层、汇编语言(台湾那边叫“组合语言”,好长时间后我才明白过来的)之类全然不知。装上了一个SoftICE,看上去倒是蛮酷,拉来一个软件照猫画虎"7878"了半天,完全莫名其妙,数次尝试后终于崩溃,遂放弃……

第一次上看雪论坛,好像是在01年左右,当时刚刚用小猫连上了网络,又想到了被我一度放弃的Crack,心想在网络上找资料应该比较方便吧,于是就顺着搜索引擎来到了看雪。记得当时还是那个最初的001论坛,当时的《论坛精华》集是出到二还是三我记不大清了,《加密与解密》已经出了第一版(可惜我那边买不到:()。按照大牛们的教程,简单的学了一点汇编,开始用SoftICE+W32DASM乱搞软件玩,没想到还真让我搞出来几个明码比较的,激动得要死。后来有一个软件我从注册码猜出了注册算法,然后鼓足勇气把破文发到了论坛上(不是用我现在这个ID),后来发现被收入精华四了,呵呵,写这篇文章的时候又仔细看了看,发表时间是2002/01/01,真是时光荏苒啊……

真正的初窥门径,应该还是在高二的那个暑假(03年),托同学从省城买来一本《加密与解密(第二版)》,才发现自己实在是太弱了。后来就试着耐下心来好好学了些东西,WINDOWS编程啊、PE文件结构啊、汇编语言之类的,再看以前让我头痛的那些软件,似乎就容易一些了。第一次搞出软件的注册算法应该是这篇文章(link),当时兴奋不已地发到看雪上,然后居然被加精华,感觉很是爽了一下。后来一段时间一直在翻找各种共享软件,挑着软柿子捏,常常是破完了一个马上卸载,有时候还要为注册表、系统目录里面留下的各种垃圾东西发愁,可惜机器太破跑虚拟机太吃力,不然也许还省事些。现在想来当时的软件保护应该还不算太强吧,也可能是我找的软件都比较老的缘故,所以虽然在看雪上也发过一些精华帖,不过其实技术含量不高,看上去比较唬人而已。

实话来讲当时搞这个玩确实对学习有点影响的,不过我也从来不是那种刻苦的学生,所以倒是影响不大,没事的时候搞搞这个就当消遣了。后来高考完事,时间比较充裕了,感觉总是找注册码有点枯燥,于是就开始玩一些乱七八糟的东东,记得有给一个游戏加上无敌秘技(link),给FlashGet扩充功能(link),以及假冒高手指点新人(link)等等,还写过一个半成品的disassembler(link)。可惜好多东西都是浅尝辄止,难免贻笑大方了。现在想来有不少遗憾之处,比如没有研究关于壳的技术、没有好好的学习保护模式编程等等,只好等以后有时间再说了。

上了大学以后,开始沉迷于一个叫做ACM大学生程序设计竞赛(ACM-ICPC)的比赛中,逐渐远离Cracker的世界,以至于再看现在的精华文章,感觉真是要从零再开始了,想想那个OllyDbg我都不怎么会用,呵呵。当初参加这个比赛主要是高中时候学过一段时间的信息学奥赛(OI),但是由于自身努力不够再加上学校师资条件等原因,终于一无所获,感觉十分憋闷,想到了大学好好施展拳脚,后来就越来越喜欢上了这个比赛。它让我学会了很多东西,比如如何把自己的思想准确表达给队友,如何在不利的形势中保持镇定,如何面对那些你无法超越的牛人,以至在比赛之外,如何看待暂时的成功与挫败,如何规划自己未来的路等等,总之这个比赛让我受益匪浅。对于论坛上即将进入大学或刚入大学不久的学弟学妹们,如果有条件的话,我建议你们也试一下,保证不会后悔的。(做个广告,呵呵)

经历就这么多了,下面说一下我对加解密的看法,仅仅是个人的目前的观点。

就我自己而言,当初研究Crack,其实就是为了消磨时间,与其把时间花费在我并不怎么感兴趣的游戏上,还不如用这些时间干些好玩又略有意义的事,如果有可能的话顺便给外人展示一下自己的“电脑才能”。我想对于大多数人来说也是一样,这个东西只能做为业余爱好,真正能以此为职业的应该还是少部分(那些合法性存有争议的收入暂且不计)。因此我认为对待Crack的态度应该是”Just for fun”,毕竟在学习或者工作中还有很多其它非常重要的东西,尤其是对于初中或高中的同学而言,强烈建议还是以学业为重,如果说是花费大量时间搞竞赛还能说得过去,但是搞Crack实在是太“冷”了些,在现有条件下这种冷门人才毕竟是不容易被承认的,这点相信大家都能理解。如果是大学的计算机相关专业所谓“科班出身”的同学,强烈建议一定要先打好基础,这个基础包括数学功底(范围很广,包括高等数学、概率统计、线性代数以及和计算机科学关系更大的离散数学、图论、组合论等等)、数据结构与算法分析技术、编译原理、汇编语言等等,总之就是典型的CS专业的通常的被认为很无趣的那些课程,用心去学,相信总有一天会发现它们的用处的。不要花费太多时间在那些奇技淫巧上,那基本只是翻手册加上砸时间而已,这些完全可以在后来的工作中逐渐熟练起来,而大学期间那个潜心钻研的环境与心态,却不是以后能够容易获得的,所以请一定要珍惜,至少目前我是这么认为的。

就我自己来说,其实我不是很喜欢工程化的东西,比如我现在所学的“软件工程”专业,学了这么长时间,说白了就是一边应付客户各种莫名其妙的要求,一边想方设法从客户手里忽悠到钱而已,其实感觉十分的无趣。相比于engineer(或者是reverse engineer? 呵呵)和scientist,我更倾向于做后者。我感觉自己是个理想主义者,我认为人生的意义在于探索神秘的未知世界,期待能为人类做一点贡献,让我的名字出现在后来人的论文甚至是教科书里,这样才不枉在世上走一遭。 而Crack更多的是人与人之间的斗智斗勇,当然它也同样深奥广博、乐趣无穷,并且推动了很多相关的研究,比如密码学等等,但总体来说,仍然是属于“内耗”。记得以前有高人分析国内的软件业情况时就说,现在国产软件在技术上不如外人,但在加密上下的功夫却要多得多,当然这和大众的知识产权意识等等有很大的关系,不过也能从一个侧面反映出Crack带给业界的影响吧。因此我现在的原则是,自己不发布任何成形的注册机或破解补丁(当然现在也是有心无力了,哈哈)不到不得已的时候,尽量少用破解的软件。话说回来,其实Free与Open的天空同样很精彩,我也是一个Linux的拥趸,呵呵……扯远了,还说scientist。在计算机科学领域有着太多太多的未知,她值得我们用一生去追寻。如果现在有人问我:你以后打算做什么工作啊?我会一如幼儿园的孩子般无限憧憬道:我要做科学家~我知道恐怕迟早有一天我要放弃这个想法,去过一种或许在外人看上来也颇为滋润的生活,这也许是个更好的选择,但我希望这一天晚一些来到,越晚越好,嗯。

本来以为凑不够八百字,发现里嗦竟然写了三千,写到最后已经不知所云了。对能耐心看到此处的朋友表示敬意,也希望大家能够多多指教。最后以王国维先生提到的做学问三境界作结,与君共勉:

昨夜西风凋碧树。独上高楼,望尽天涯路。
衣带渐宽终不悔,为伊消得人憔悴。
众里寻他千百度,回头蓦见,那人正在,灯火阑珊处。