libingword 发表于 2011-7-23 15:29

如何让你破解成为可能

破解成为可能
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了.当然改变程序运行流程也可以达到破解的目的,比如 用 Winhex 修改程序.
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了 这样 网友中 WinHex 内存着注册码也就有了可能。原理:

数据是在内存中保存的,用 WinHex 内存着注册码也就有了可能,但是内存中保存注册码的数据不是永远的,当别的数据被计算,写入时往往会覆盖这时 用 WinHex 内存着注册码也就无法找注册码了,我们只要用写调试软件,让他在程序刚在内存中写完正确的注册码我们就让程序停止运行,防止程序继续运行产生的数据覆盖内存中的注册码.

软件介绍:
      运行我修改后的 OllyDbg 名字是 那个 CMD 文件如图
 
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/1.gif
他主要有
         汇编代码地址区:他其实就是汇编代码的指令地址。(注意这种颜色的背景代表程序运行在这行代码上,并且中断在这里,如果是蓝色背景表示这个地址上被下了断点,也就是程序运行在这里时会被中断)
         汇编代码区:显示被调试的汇编代码。
         寄存器区:显示寄存器里面的信息。注册码一般写在这块。
         堆栈区:显示 栈记录,显示 一些寄存器过去的记录。注册码很多会在这里出现。
         显示当前状态区:显示当前状态,比如中断信息等等。
         机器码区:显示的就是机器码,就是该行汇编命令的代码,相应的机器码=相应的汇编命令,所以用 WinHex 修改程序时时通过修改机器码,达到对汇编命令的修改。
         内存区:高级跟踪分析时用到。
快捷键
         F2 下断点。使程序运行到断点地址时中断下来,同时在 显示当前状态区,会显示中断信息.如果在汇编代码区选中一行命令,按下它,汇编代码地址区的这行地址上背景显示蓝色,再次按下它,蓝色消失说明断点解除。
         F8 单步运行,也就是当你按下它时,程序往下运行一行.
         F9 运行
            在没有断点是运行可以使程序运行到断点处,中断。
            在程序中断在断点时按它,可以使程序跳过断点继续运行.
            
名词解释:
         断点:程序运行暂时时停止的地方。
         汇编代码:有称机器语言,程序通过汇编语言和CPU 建立关系,正常运行,所有程序都是先被翻译成汇编语言再运行的. VC,VB,Delphi等等高级语言写的程序,依然要被翻译成汇编代码的。
汇编语言介绍:
      跳转命令
      JA/JNBE 不小于或不等于时转移.
      JAE/JNB 大于或等于转移.
      JB/JNAE 小于转移.
      JBE/JNA 小于或等于转移.
      JG/JNLE 大于转移.
      JGE/JNL 大于或等于转移.
      JL/JNGE 小于转移.
      JLE/JNG 小于或等于转移.
      JE/JZ等于转移.
      JNE/JNZ 不等于时转移.
      JMP 无条件跳转

      CALL    远程调用,也就是调用子程序,比如调用计算注册码的一段子程序.
      NOP   无效空指令,当程序运行到该命令时,它什么都不做。
 
      Olldbug 的设置:
                     1. 路径设施. 方法:启动 CMD.exe 选项菜单》界面选项》目录》把路径修改成当前 Olldbug 所在的路径的相关文件夹即可.
                     2. 文件关联. 方法:CMD.exe 选项菜单》菜单关联》添加 olldbg 到系统资源器菜单》OK.
   建议大家使用我修改后的 Olldbug(就是那个 CMD程序),其他的设置我已经设置好,只要把上面提到的两项修改下即可.

       Fi.exe 简单使用:他是一款侦壳的工具,现在不要求大家对壳有理解啦,下一课要用到的。使用方法:把 Fi.exe 复制到你要破解的程序文件夹中,按住你要破解的软件图标拖到 Fi.exe 图标上即可.然后出现如图
                                             file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/2.gif
注意图上注明的字,如果软件被壳加过,下面的字会变成 绿色,黄色,或红色的注释,从注释中我们可以获得改软件被什么壳加过。如果软件没有加过壳,那么如图显示,字体颜色灰暗,标识软件是什么语言写的.
分析软件流程:(我们以破解 动画.exe 密码为例.)
             运行 动画.exe ,随便便输个密码,点确定,OK 成功!(做梦,那有这么好的运气啊~当然显示 Password Wrong~).
    它的运行流程应该是这样的: 输入密码后点确定按钮. 软件首先从你输入的密码框中截取密码 >> 软件计算出正确密码 >> 对比你输入的密码 >> 下一步就是跳转了(这块最重要) .

       跳转分两类:
                  一. 成功跳转. 就是说,当你密码输入与正确密码一样时,他跳转到成功的地方.如果你输的密码不正确那么它就不跳到成功的代码段,而一直向下运行(显示错误的代码段)。
                  二. 错误跳转. 正好遇上面相反,当你密码输入与正确密码不同时时,他跳转到失败的地方.如果你输的密码正确那么它就不跳到失败的代码段,而一直向下运行(显示正确的代码段)。
如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/3.gif
关键 Call :其实就是用来计算 正确序列号或密码的子程序.
关键跳 :一般时 上面汇编语言跳转命令介绍里面的 JNE .
 
问:如何找 关键 Call 或 关键跳?
答:看上面流程我们知道,不管是显示失败信息还是显示成功信息,他们都在关键跳下,我们只要根据 成功或错误所提示的文字来找成功或错误代码段,找到相关代码段后,再往上找,第一个跳转命令(多数是 JNE)就是关键跳啦~关键跳 上面的第一个 Call 命令一般时 关键 Call ,我们破解的时候只要在 关键 Call 上,下断点,再单步跟踪的话,就可以看到正确的注册码和错误的注册码(我们这里是密码).
运行下 目标程序,随便输下密码,确定,显示 Password Wrong! (即上面说的显示错误信息)
               

                         1. 加载要破解的软件。先把刚才运行的 试验品.exe 关闭 ,运行 CMD,点文件菜单>> 打开>>你要破解的软件.或直接再 试验品.exe 上,右击鼠标>>Ollydbg.      这样要破解的软件就被 CMD(Ollydbg)加载了!
                         2. 查找错误信息. 再 汇编代码区右击鼠标 >> 搜索 >> 字符串参考 >> 再弹出的窗口中找 "Password Wrong!"
如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/4.gif
我们在这个窗口里面找失败信息或成功信息(不过中文信息他不支持),看 "Password Wrong!" 的地址是 402048 ,我们在上面双击下,最上面的那个窗口就来到了 402048
00402025 |. E8 24FEFFFF CALL 试验品.00401E4E
0040202A |. FFB6 A4000000 PUSH DWORD PTR DS: ; /s2
00402030 |. 8D45 CC LEA EAX,DWORD PTR SS: ; |
00402033 |. 50 PUSH EAX ; |s1
00402034 |. FF15 E0234100 CALL DWORD PTR DS:[<&MSVCRT._stricmp>] ; \_stricmp   //关键 Call我们在上面下断点,鼠标选中这
0040203A |. 83C4 20 ADD ESP,20                                                   一行,右击鼠标,断点切换(其实可以直接选中
0040203D |. 85C0 TEST EAX,EAX                                                      这行 按 F2 就可以完成下断点了)
0040203F |. 74 15 JE SHORT 试验品.00402056                                     //关键跳
00402041 |. 6A 40 PUSH 40
00402043 |. 68 A4504100 PUSH 试验品.004150A4 ; ASCII "Player"
00402048 |. 68 94504100 PUSH 试验品.00415094 ; ASCII "Password Wrong!"       //我们首先来到这里,往上找.
0040204D |. 8BCE MOV ECX,ESI

 
402048 下面就是错误信息代码段,我们在最上面的那个窗口中往 402048 上面找关键跳和关键 Call.关键跳的地址是 40203F 关键 Call 地址是 402034
00402034 上下断点如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/7.gif
变成蓝色后,按 F9 运行,在运行的 动画.exe 中输入密码,我随手输 123456789 确定,回到 CMD 的窗空中,在最下方状态兰中我们看到了当前的状态,中断在 地址 402034.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/6.gif
在,寄存器区,我们看到了 醒目的 "qq24882688"字符,这是什么啊??呵呵~在往下,看堆栈区中的数据如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/5.gif
0012F720 0012F778 |s1 = "qq24882688"
0012F724 003A6860 \s2 = "123456789"
0012F728 0012F778 ASCII "qq24882688"

123456789 是我们随手输的,qq24882688 是正确的密码~
成功!
还有就是收尾工作:
                  1. 关闭 CMD 中加载的程序: 点下面的那个 叉.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/8.gif
                  2. 选择插进选项 >> 文件清除 >> 删除全部文件.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/9.gif

结束了~~~

Rookietp 发表于 2011-7-23 15:32

图挂了!!请补图

李黄江 发表于 2011-7-23 15:32

学习了。 沙发

依楼听风雨 发表于 2011-7-23 15:42

图全挂了,看不到。。。。。。

iipj 发表于 2011-7-23 15:56

不要直接从word里粘贴啊

q174907134 发表于 2011-7-23 16:18

图片看不到啊

641164070 发表于 2011-7-23 16:30

图片长脚全部跑了{:1_918:}

wcr100 发表于 2011-7-23 16:36

不错的贴子,强列支持下,并留个脚印,以备学习。

turn212 发表于 2011-7-23 17:04

好文呀,学习了。
页: [1]
查看完整版本: 如何让你破解成为可能