欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

妙解破解的原理

程序员文章站 2022-06-28 08:28:19
不可不说一下学习破解的三个阶段:   初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破。   中级,追出软件的注册码。   高级,写出注册机。  ...

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

  初级,修改程序,用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处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。

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

  初级,修改程序,用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处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。

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

  初级,修改程序,用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处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。

  下面列出两个最常见的情况(可参考相关教程):

  no.1

  mov eax [ ] 这里可以是地址,也可以是其它寄存器

  mov edx [ ] 同上,该条指令也可以是pop edx

  call 00?????? 关键call

  test eax eax

  jz(jnz)或jne(je) 关键跳转

  看明白了吧,在关键CALL之前,软件会把两个注册码分别放入eax和edx中,你只要在CALL处下d eax或d edx就能看到正确的注册码了。

  no.2

  mov eax [ ] 这里可以是地址,也可以是其它寄存器

  mov edx [ ] 同上,该条指令也可以是pop edx

  call 00?????? 关键call

  jne(je) 关键跳转

  以上两种情况最为常见,而那些个不太常见的情况,我们这里就不再提了。到下下一章的时候,我会给你讲相关方法的...

  关于查找软件注册码的部分,就到这里。具体内容,下下一章咱们再说。(不是说了吗?我以经可以接到你的砖头了,干嘛还要丢呢? )

  最后,再来说最后的所谓的高级阶段,如果你相信自己。并且热爱Crack,那么你一定会熬到这个阶段的,只是时间因人而异。

  其实分析软件的算法,是有好多技巧在里面的。呵呵,最起码我刚开始的时候就摸不着头脑,那么多CALL,每个看起来,都很重要,都追一遍?结果连好多API都被追了进去。等你自己真正用心分析了一个软件的算法,并写出了注册机后。你就会明白其中的道理了。