稍微有点儿计算机知识的朋友一定知道, 计算机是只识别 0和1的, 最初那会儿, 要写程序, 就要用 0和1 来写,呵呵, Cool 吧!所以曾经有过的对程序员的崇拜,可能就源自那个时候吧后来, 人们发现用 0和1 来写程序, 太不爽了, 不但写起来不上手, 而且回过头来看的话,应该很难再看明白了,总之出于这些原因,就有了汇编语言。汇编语言用一些助记符来代替 0和1 的多种组合, 也就是各个指令, 这样的话, 从一定程度上来说, 方便了许多( 一头老牛: 方便太多了)( 一只菜鸟: 一点儿也不方便, 完全看不懂)。但是, 汇编也同样不方便, 同样写起来不爽, 而且后期维护同样不方便, 再加上人们慢慢地需要写一些更大的程序, 在这样的情况下, 高级语言就被人发明了出来, 就是我们今天用的 Basic 、 pascal 、C、 C++ 等等等等,这些语言的出现,一下了使程序的开发难度大大减低了(一头老牛: 减低太多了, 我膝盖就能写程序了)( 一只菜鸟: 还不是一样难), 以前用汇编要很长时间才能开发出来的程序, 现在只需要很短的时间且很轻松的就可以搞定了, 特别是最近几年, 可视化编程的大肆普及, 使程序员的神秘感一下子摔了下来, Coder 这样的词现在都满天飞了。最惨的就是汇编, 一夜之间变成了低级语言、下流的语言、吃完大蒜不刷牙的民工、开车加完油不给钱的地痞、在公共汽车上吐口水的冰岛人等等等等(汇编:呜呜呜…我不活了)。但是汇编还是有它先天的优势的,因为其与 CPU 内部的指令一一对应,所以在一些特殊的场合,必须由汇编来实现,比如访问硬件的端口、写病毒…. 而且生成的可执行文件效率巨高,且生成的可执行文件贼小,写小程序是很爽的,呵呵,而且用汇编写注册机, 是件很轻松的事, 你不用再为怎样还原为你所熟悉的语言而为难。说了这么多,还是切入主题吧(昏倒观众若干): 既然计算机只识别 0和1, 那么, 所有存储在计算机上的文件, 也都是以二进制的形式存放的,当然也包括可执行文件了。所以,你只要找一个十六进制编辑器比如 Ultra Edit 什么的,就可直接打开并查看可执行文件了, 呵呵, 如果你能看懂的话你会发现, 此时看到的, 全是些十六进制数值(每4 位二进制数可转换为一位十六进制数) ,这就是可执行文件的具体内容,当然,其中就包括可执行文件的代码了。(一头老牛:好亲切啊) (一只菜鸟:笨牛,你给我闭嘴,我眼都花了)。呵呵,此时,你是不是觉得看这些东西,有些那个? 这些东西看起来就像有字天书, 没人能* 这玩意儿来进行分析, 于是乎。就有了相应的软件, 可以将这些十六进制数值转换为相应的汇编代码, 这样的话, 我们就可以对别人的软件进行分析了。这就是所谓的逆向分析了。呵呵, 聪明的你现在一定在想, 如果找到软件计算注册码的部分, 并对其进行分析, 弄懂它的计算方法, 那么你不就不用通过¥的方式来进行软件注册了吗?当然, 你也可以将此计算过程还原为任意一个你所熟悉的编程语言, 那么, 编译后的这个程序, 就叫做注册机, 它的功能就是计算某一特定软件的注册码。( 呵呵, 是不是经常在软件中看到此类说明? " 禁止制作和提供该软件的注册机及破解程序; 禁止对本软件进行反向工程, 如反汇编、反编译等") 作者这样做,心情我们是可以理解的,毕竟人家花了那么多心思在自己的软件上,所以,我不希望你仅仅是因为交不起注册费的原因来学习破解。总的说来,上边儿的介绍有点儿太理想化了,上面提到的分析方法,就是所谓的静态分析, 此类分析常用的工具有 W32DASM 、 IDA 和 HIEW 等。静态分析,顾名思义,就是只通过查看软件的反汇编代码来对软件进行分析。一般如果只是想暴破软件, 只进行静态分析就够了。但要想真正的弄清注册算法, 一般还是要进行动态分析的, 即能过调试器来一边执行程序一边进行分析。具体内容,我会在《破解原理》和《调试器入门》中详细说明,呵呵,毕竟现在都以经有点儿跑题了。我废话说了这么多, 其实就是想告诉你汇编的重要性, 我不要求你精通, 但最少你也得能看懂吧, 要不, 还谈什么分析?虽然有哥们儿一点儿汇编都不懂就上路了, 甚至还破掉了几个软件,但是,这样是不是惨了点儿?难不成你想暴破软件暴破一辈子? 其实你完全不用惧怕汇编的, 看上去怪吓人的, 其实跟你平时背那些控件的属性方法差不多, MFC 那么多你都搞的定,汇编命令才有多少?而且,汇编不光只是在 Crack 软件时有用, 在好多地方也都有用,且用处巨大,所以我觉得,把汇编拿下,是件义不容辞的事: 你只要相信它并不难就好了。(以下为第二次修改时加入) 先给你讲一下 CPU 的组成吧: CPU 的任务就是执行存放在存储器里的指令序列。为此,除要完成算术逻辑操作外,还需要担负 CPU
菜鸟破解从头学 来自淘豆网m.daumloan.com转载请标明出处.