为什么我的成长经历是从2002.8月写起,因为那是我的一次重大的转变。为了应服高考,我扔掉了大部分我以前做实验所收集器材,转而对思维方面的研究,而在这所取得的成果,成了以后学习过程中的指导方案,学习软件加密解密,成了是我的不断进步的一个学习策略,我不应该是一个Cracker,因为我很少破解别人的软件,除非是个别自己用的,才拿着来分析提高一下自己的技术。
2002.8月初,我是从这时开始研究学习方法,因为这时正值高三,学习压力比较大,提高学习效率、解决心理问题都是首要问题。我每每抽空分析,在学习过程中遇到的问题所发生的原因,并把一些经验跟分析结果写的一个笔记本最后那几页里面,并不断地积累.。在那段时间里,我分析过为什么英语成绩一直没有赶上去,语文水平也还没能提高,而理科方面的比较强,敏感铸造天才。
在那一年时间里,我几乎都是把所有业余时间都用来分析遇到一些事情了,一直用的兴趣学习法也是在那时整理出来的,还有分析一些事情发生的必然原因,为什么要把现实中所遇到的一些事情抽象化呢,是因为这样会使它的适用范围更广泛,也就是找事物发生的规律。
什么是解决心理问题,比如你做什么事感到比较困难,这是心理的感觉,就是所谓的心理问题,怎么把这感觉到困难的问题转换成容易理解的,就是解决心理问题。
什么是兴趣学习法,跟据需要去学习-->提高学习兴趣,正是我们用它,才会有兴趣去学习它,为什么有好多人临阵磨枪,到考试的时候才加紧学习呢?也是这个道理,我们要找到我们感兴趣的学习好,在这个基础上扩张,不就把以前不感兴趣的学的,转换成感兴趣学的知识了。举个例子:单独学汇编指令的用法,有谁会说学起来很有味呢?但是如果分析一些软件的注册算法,那时你就不得不去查汇编指令的用法了,这时你也不会感到学习汇编指会是枯燥无味的了,只是想到怎么把算法给分析出来。在这种学习环境中进行学习的话,同样学习效率还会提高。
高考之后,是因为计算机网络让让我选择了计算机行业。这也是没有办法的事,如果从事其它行业,你就会因为找不必需品而头痛,如果没有任何条件,你什么都做不了,就是这样的现实。在以前高中的时候,为了能买到一点做实验的化学药品,我都要市里问好多地方,还一定能买到,如果做一些设计发明,一切都设计好了,最后你跟本就办法把它做出来,一点基本条件都没有,有什么办法呢?像这样子,如果选择其它的什么擅长的行业,肯定是没有发展前途了,要么就是自己的命运掌握在别人的手里。
我喜欢自然科学,从小就这样子,我也希望能从事相关科研项目,但是出生在中国几乎就等于你没有希望了,这一直就是现实,为什么我们国家这么多年来,未能有人在本土获得过诺贝尔奖呢!这并不是代表个人,而是整个民族的素质。就拿拍电影,来说吧!中国人拍古代片(守旧),而美国人则拍科幻片(不断创新)。
而从事计算机行业,一台计算机、一根网线就是所有的必备条件。并且通过网络还可以学习国外很多自然科学方面的知识,但是英语要学好,因为大部分这方面的资料是英文的,正也是这样我才会对英语感兴趣的。
2003.8月我买了第一本计算机方面的书籍――C++编程的教程。当然起初,看这类确实是枯燥无味的。一页页地看,从第一章数据类型,一看到到函数那一章就没法看一下去了,其实最主要的原因是不知道看了这些到底有多大用处,而书中的实例则是与现实中的应用脱离了,并且自己总结的规律也展示了这一点,顺向思维,违背自己的意愿地去学习,肯定是很难学好的。
2003.9.月我来到了长沙xxx学院,令人吃惊的是整个学校才six亩地。
提前做好具体的计划,多为以后做做考虑,在学校的时候要考虑一下,毕业之后怎么好找工作或者自己创业,要必备哪些知识,想想这些好提前做准备,不然的话,在你有空闲时间的时候,你就会觉得没什么事干了,就想到怎么玩,玩完了几年,面临要自己养活自己的时候,你才自己好多知识都不知道,找工作有可能都困难,到这时就以经晚了。
而我在那时候早就为以后做了全面的策划了,这也是我一直以来的风格。在这学期里,最开始每到周末我都会花一个下午的时间到电脑城逛逛,特别是电脑维修的地方,多了解一下计算机硬件方面的知识,再之后,周末就是去读书城去看书,看的基本上都是计算机相关的图书(看得都是计算机硬件,一些非常基础的书籍),或者看一些科普方面的,一般都是去一整天的,到中午就到外买点面包吃。
除了周末,其它有空的时间,我在原来的基础继续分析了一些事物的规律,日常学习过程中所遇到的问题分析发生的原因。并于2003年底,做了一次比较全面性的总结,包括了从初三下学期开始一直到当时的所取得的业绩,信纸整整写了三十多页,里面提到过如何培养、增强自己的创造性思维能力方法,跟面对一些事情分析方法,还有一些己经整理的规律,比如:及时效应,一件事想好了它,就要尽快把它做好,不然失去兴趣了或者你当时想到的一些东西会忘了,你就有可以再也不会做好它了,或者要花更长的时间去做好它。
2004.02.20 我拥有了我自己的电脑,因为我比较喜欢学英语,所以最开始,就到网上搜索,学英语方面的资料,起初是下载一些英语听力的mp3,后来就用到了学英语方面的软件,但那时这类软件大部分都是共享的,如果不注册,会有一大堆功能限制,正是因为这样我才走进了Cracker的大门的。
第一次碰运力破解了几个软件。一个记单词的软件,启动的时候注册,我随便输入注册码,刚试几次就注册成功了,以后也就没功能限制了,确实比较有意思的,那个网站的其它软件,也被我如法炮制给解决了,当时确实比较兴奋的。
记得第一次暴力破解,我是在看网上看得别人的教程,用UltraEdit 搜索十六进制数据,再按教程上的说明修改QQ.exe里面几个字节,可以让qq输入错误的密码同样可以登陆,其实就是改了一个跳转地址,当时是觉得还比较有味的。
再之后,有一个学习英语的共享软件我用过winhex在内存中搜索用户名,然后就在用户名附近找到了注册码。
当然了,这一类的破解方法,都是没什么技术含量的,没有一点基础都能做,但毕竟这类软件是少,当时国内大多数软件都是用vb做的。在某个破解工具下载的网站看上面的介绍,
说SamrtCheck对破解vb程序很有效果,我,于是就开始学smartcheck的使用但是这个工具根本不怎么管用,找一些软件的注册码,根本就不找出来。因为大部分软件根本就不把真正的注册码放在内存里面,这就没什么办法了。再之后就是决定开始学习反汇编了,只有了解细节方面的知识,才能解决这类软件。
我当时明确定了学习crack软件的主要目的,当你在使用windows 系统的时候,你知道那一个个应用程序是怎么做出来的么?在当时我仅有一本C++编程的教程,还不知道windows编程,也不知道有msdn文档,照着书上写几行代码,在dos窗口输出结果,想要做出windows 平台常用的那些软件,简直是难以想像的,而学习软件加密解密,不仅可以免费使用部分共享软件,能通过分析别人的软件学得更的知识,一举两得不是更好么?当然了这也是根据当时的前提条件而定下来的。
2004.6.18日我在看雪论坛注册了一个账号FlyToTheSpace,取这个名其实是代表我对高科技的向往!当时应该是在读书城看书的时候看了加密与解密那本书,我才知道看雪学院,后来才找到看雪论坛的。
学习cracker入门是比较难的,特别是像我这样,一切都靠自己自学,连编程都不会。最初用w32dasm反编译应用程序时,确实是一头雾水,一版一版地汇编代码不知道从哪里开始,从最开头看吧!那一条条指令还不知道到底能干什么,一页一页地去看汇编代码,这样子持续了一段时间,基本上没一点进展,当时为此打击了我不少学习的信心的,看教程也看不懂。因为在那时,我就只装了个windows xp系统,装上driver stdio,只要softICE一启动系统就蓝屏了,所有的补丁都打上也还是无济于事,而trw2000则只能运行在win98平台上,也没办法对照教程。也只能用w32dasm反编译看看,当时汇编指令还有好多不太懂.因为使用兴趣学习法,我并没有去死记硬背那些汇编指令,看着那一堆堆的指令确实很头痛的。
2004年 放暑我在学校下载了好几十个共享软件,跟一大堆破解工具,还有部分教程。当时为了调软件,我不得不装上了windows 98,在windows 98平台,再装上softICE,终于可以用了,trw2000运行起来也正常了,再后来,我花了一段时间学习softICE的用法,在windows 98平台终于学会了如何动态调试分析程序。结果没过多久我就成功解决了一个vb做的共享软件,通过改跳转把nag给去掉了,也给自己增加了点自信心,等到开学的时候还在论坛里面发了一个帖子的,当初我是连程序堆栈干什么用的都不知道,只知道单步执行,找到离出现注册提示的最后一个跳转,将它改一下就可以达到暴力破解的目的了。。
当时我还一直不明的一个程序是怎么运行的,因为这个我还在论坛发过帖的,我一直认为只有不断的探索,才会有不断地进步。
在使用softICE跟trw2000跟本没多久,我就放弃使用它了,主要是因为在调程序时CPU应用率一直是100%,用不了多久电脑就变得跟火炉一像了,CPU风扇不停地吹着,键盘敲着都是滚烫的,转而使用的是ollydbg,当时用的是1.09版本的,尽管用ollydbg调程序,程序运行时CPU应用率是100%,比起softICE还是还是好了点。毕竟我们分析汇编代码的时间要长一些..(这个问题,我于2006年3月份终于给解决了,修改过的ollydbg一直用到现在,没出什么问题,这还是通过分析keymaker 里面的内存注册机时得到的启示)
04.10月我在看雪论坛里面,认识了xy2000 BCG的leader,那时他还非常热情地回答了我好多关于脱壳方面的问题,而早在以前我也看过bcg的简介,还有用过bcg发布的破解工具大礼包2004,于是我才决定加入bcg的,首先要三篇自己原创的文章,这个还是比较容易的,因为写的文章要求非常低,而为了那个crackme我确是一直忙了整整4天.因为我那时的基础实在太差了,用ollydbg单步执行跟踪,不一会在一大堆汇编代码中迷失方向了….到最后,幸亏那个crackme的算法很简单,让我把注册机给整出来了。那时我可是连一个加密算法都不懂的.
04.11 月一个偶然的机会,在网上找到了论坛出的《加密与解密(第二版)》的电子版可以说,只要把这本书上的内容完全理解的话,那么就可以说,你己经在这方面入门了。但是对于一个新手来说,从头看到尾,看几便就能理解的话,这几乎是不可能的。而我的方法则是有针对性的去看,一本书经常是从头翻到尾,多花时间看懂那些能理解的,迅速绕过那些不易理解的内容,再之就是把它做为参考书,用到的时候就看看,而经过一段时间的实践和其它相关方面知识的积累,再继续看书,你会发现以前不容易理解的内容,变得容易理解了,就这样反复地实践、看书,看书再实践,就这样在感觉不到任何困惑的方式下,基本上学完了整本书,当然了这也是几个月之后的事了。
而脱壳入门,我是从一个chm文件格式的教程里面学的,里面软件连同脱壳动画跟教程都包含里面了,总共有60多M,名字现在不记得了,脱壳的难度还分了三个级别。记得里面至少十多二十篇文章,而这里面大部分文章的作者,就是二哥了,可惜啊!他现在己经退出江湖了。
这里再说说我对软件脱壳的看法,当你面临着一个你从没有脱过的壳时,应该要想到做加壳软件的开发人员,花几个月时间,或都更长时间的开发出来的壳,而你花几个小时未能将它给脱了,应该要有心理平衡,不要认为自己的能力不行,而是一些必要的知识你还不知道。这时你可以到网上,或者看雪论坛精华里面找一下,有不有人写过,相关方面的教程,
如果有的话,那么你就可以在别人的基础上继续前进了,如果没有的话,那也只有做先驱者了,如果你有充足的时间的话。为什么必须要这样呢?因为对于一个脱壳都来说,面对的并不仅仅是脱一个壳,而对开发者来说,可能就仅仅一个。难道你想把你大部时间和经历放在脱一个壳上,单独跟写壳的开发人员较量么!
04.12 月我用vc6.0做了一个creakeme ,而里面的SetWindowText,还是我从keymaker里面通过反编译抄出来的,由这时可见,我在一路的学习过程中也是非常艰辛的,一切都要靠自己不断地摸索,才会有所收获,一切也来之不易,才会懂得珍惜。
05年初,还是一次偶然的机会,我在学校的新机房里的机器上看到了msdn文档,于是等到第二天,下午一下课我就去电脑城买了msdn的安装光盘了,因为再也等不急了,有太多的问题,要依靠它去解决了,我学习windows编程,应该就是从这时候开始的。
说实话在学校里面学C语言课程的时候,我也没怎么学好它,所有的进步都是自
学windows编程之后才开始的,用得多了,你自然就会对它熟悉了。
一直以来学编程语言我基本上没有感到过什么困难的,它仅仅是一种工具,而只有要实现什么,必需做什么,我一直以来都用的兴趣学习法,不断地进步来,则来自勤奋,与掌握技巧,不断地规划。
(1)一切生活,工作等等,都可以收集素材,你所关心的,比如你出去旅游或者其它地方,再你回来时,在这过程中留给你的印象最深的是什么。。
每个人几乎都不一样的,诗人、画家、农民、科学家、it人士等等。。
一切的创新来自灵感,比如你突然想到什么,有个新的想法,而灵感则才自于现实需求。
一个人的能力表现则体现在对掌握的知识,素材的积累跟分析处理上,一个人积累的越多,分析的问题越多则,在能力方面就体现得越强,分析自己有什么,最多能做什么!就算自己失败也不是自己的过错,可有的人确是打着自己是菜鸟的幌子,总希望分享别人的劳动成果,自己什么也不想做,而只有这些自己什么也不做的,才会成为真正的菜鸟,要认识到自己当前的前提跟形势,不要随便下结论,认为自己什么都不行,于是什么都不去做.这你就错了..成功的喜悦,也只会留给那些勤奋的人。
(2)要想提高学习工作效率,必需要有一个具体方向跟目标,也可以说是标准,这个可以从艺术观点,跟自然科学观点,去寻找最终目标,艺术是从人们的感觉上出发的,比如画画的最终效果,是人感觉的,人为定的。而自然科学则是具体的事实,比如今天必须把某个软件的注册算法全部分析完成。
(3)在遇到一些艰巨的任务时,应该尽量在别人的基础上继续发展,假如做某一件事每次都失败,在心理总会有一种失落感。如果一再失败,最终有可能使你放弃了,.-->在别人的前提下,你继续努力有可能你成功了,这也是不错的,起码增强了点自信心,只有在找不到任何发展基础的前提下,自己才从头开始做,因为这也是没有办法的事了。
(4)思维分析。
请大家分析一下,下面两种情况..有人指点与无人指点之间的区别与联系.(1)a->b->c, (2)a->b->d, (3)a->b->e ,(4)a->b->f, (5)a->b->g.总共5条路,正确的线是a->b->e,如果别人告诉你正确的线路,那么你走一次,就能到达目的地了,但是如果没人给你指点的话,那么你就有可能,a->b->c->b->d->b->e.,就会多走好几趟路了。
下面我只给出几种情况分析.
(1)如果有人指点.那么你就仅仅知道从a如何到e,但是没有指点,你就不仅仅知道,a如何到c,还知道如何到d..知识面就得到扩充了,往往自己揣摩出来的东西,印象比较深一些...等到下次再有人要你从a到d,没有人指点的话,那么前者就不行了,而后者就己经知道了。
(2).所有的事情往往都不像想像得那么简单,有可能有别人指点从a->b->e,但是在路途但中,就有可能b->e己经变样,并不跟当初说的那个,不就同样要费劲才能实现a->b->e.,但是没人指点呢要走这么多的路a->b->c->b->d->b->e,就很更有可能迷失方向,或失去意志力,从而放弃,但是如果成功了的话,那肯定也是要费很大气力的.
下面再来总结一下..得到更好一点的方案..
在有指导的前提下实现了a->b->e,如果有空闲的话再回过头来b->c,b->d,b->f,b->g,也顺便过了下,这样的话,就把第一种情况,跟每二种情况的优点都集合起来了。这其它是创造性思维培养的重要部分。举个例子,比如你看着别人的教程,你就应该去想一下,每一步操作,别人为什么要这样子,而其它的不行,如果你把这些想清楚了的话,那你就有可能做出这样的教程了。
------------------------------------------------------
文章比较长介绍的经验也比较多,特别是一些概念方面的问题难整,本打算8月5号前完成的,结果一整理,现在都到8月6号1点17分了,看上去还有好多内容得要修改或添加的,等以后抽空再改去吧,毕竟我个人的精力是有限,失误之处难免有之,还请大家见谅。明天还要上班先休息去了
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)