找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 277|回复: 1

献给破解新手:妙解破解的原理

[复制链接]
发表于 2006-6-6 21:52:00 | 显示全部楼层 |阅读模式
不可不说一下学习破解的三个阶段:

  初级,修改程序,用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 ... <--(注册失败处!!!)

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

  这次我相信,并且深信不疑。你一定明白了。我还是不明白...倒...

  你一定看出跟第一种情况不同的地方了吧。没错!它与第一种不同的,就是第一种情况是如果注册码正确,就跳到注册成功处,如果没有跳走,就会执行到失败处。而这一种情况则是如果注册码不正确,就跳到注册失败处,否则将执行到注册成功处。

  这种情况的修改,除了把JNZ改为JZ外,还可以将其改为Nop,Nop这个指令没有任何意义,将该条指令修改为Nop后,便可随意输入注册码来进行注册了。

  原理以经给你讲了,下面我们再来讲一下具体的修改办法吧。(我假设你以经明白了我所说的工具的使用方法)



 楼主| 发表于 2006-6-6 21:54:00 | 显示全部楼层
面列出两个最常见的情况(可参考相关教程):

  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都被追了进去。等你自己真正用心分析了一个软件的算法,并写出了注册机后。你就会明白其中的道理了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|KJBBS Inc.

GMT+8, 2025-4-27 20:38 , Processed in 0.038160 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表