KingSolomon 发表于 2014-6-4 12:26:50

不可不说一下学习破解的三个阶段:

初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破。

中级,追出软件的注册码。


高级,写出注册机。

先说这爆破。所谓爆破,就是指通过修改可执行文件的源文件,来达到相应的目的。你不明白?呵呵,举个例子好了,比如说某共享软件,它比较用户输入的注册码,如果用户输入的,跟它通过用户名(或其它)算出来的注册码相等的话(也就是说用户输入的注册码正确了),那么它就会跳到注册成功的地方去,否则就跳到出错的地方去。

明白过来了吧,我们只要找到这个跳转指令,把它修改为我们需要的“造型”,这样,我们是不是就可以为所欲为了?(某软件双手放在胸口,你要干嘛?)

常见的修改方法有两种,我给你举例说明:

no.1

在某软件中,这样来进行注册:

00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)

0045123D JZ 004572E6 (!!!<--此为关键跳转,如果用户输入的注册码正确,就跳向成功处,即004572E6处)

0045XXXX YYYYYYYYYY

XXXXXXXX YYYYYYYYYY

XXXXXXXX YYYYYYYYYY

XXXXXXXX 执行到此处,就提示用户注册失败

...提示用户注册码不正确等相关信息

...

004572E6 ... <--(注册成功处!!!)

...提示用户注册成功等相关信息

呵呵,看明白了吗?没有的话,我来给你讲一下。在软件执行到00451239处的时候,CALL置0045E02处来进行注册码判断。接着回来后就来一个跳转语句,即如果用户输入的注册码正确就跳到004572E6处,跳到此处,就算是注册成功了。如果用户输入的注册码不正确的话,那么就不会在0045123D处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。

想明白了吗?嘿嘿...没错,我们只要把那个关键跳转JZ给改为JNZ(如果用户输入的注册码错误,就注册成功,输入正确则注册失败)。当然你也可以将JNZ修改为Jmp,这样的话,你输入的注册码无论正确与否。都可以注册成功。

no.2

我们再来讲一下另外的一种情况:

00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)

0045123D JNZ 004572E6 (!!!<--此为关键跳转,如果用户输入的注册码不正确,就跳向失败处,即004572E6处)

0045XXXX YYYYYYYYYY

XXXXXXXX YYYYYYYYYY

XXXXXXXX YYYYYYYYYY

XXXXXXXX 执行到此处,就提示用户注册成功

...提示用户注册成功等相关信息

...

004572E6 ... <--(注册失败处!!!)

...提示用户注册码不正确等相关信息
已有 1 人购买  本主题需向作者支付 5 元宝 才能浏览 购买主题
页: [1]
查看完整版本: 【破解的原理】