飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 11730|回复: 42

[原创] 破解入门,手脱、爆破、追码、注册机制作

[复制链接]

该用户从未签到

发表于 2008-9-14 22:33:48 | 显示全部楼层 |阅读模式
本帖最后由 geekcat 于 2015-7-21 15:17 编辑

破解入门,手脱、爆破、追码、注册机制作(图文)
本人曾爱好破解,现已基本荒废了,因公司管理事务繁多,平时没空闲时间,趁今日中秋闲余时间,给初学者发个破文吧……。
现在开始进入正题。
一、准备好常用破解工具,
1、查壳工具:PEiD  0.95
2、脱壳调试:Ollydbg v1.10(俗称OD)
3、注册机编写:keymake
二、壳的概念:关于壳的介绍文章很多,很多初学者还不知道壳是什么,那么你就暂且这样通俗的去理解:壳就是软件的保护壳。
三、脱壳:顾名思义,我就不多说了。
四、调试:用OD调试程序的进程,寻找关键(算法)CALL,修改有关汇编语言达到软件注册或破解的目的。
五、不懂汇编语言和算法怎么办?没关系,首先你必须从简单的、好欺负的软件入手,初学者尽量别找年轻的、经常更新的或高版本的软件。
六、如果你是第一次学破解,有不少软件可参考如下操作一般都能成功,(有的新版本软件除外):
1、首先注册软件,查看软件弹出的有关注册失败的信息框的内容。
2、查壳:有壳脱壳,无壳直接用OD载入。
3、手动脱壳基本方法:从OD载入软件程序后弹出是否分析对话框,点“否”,停在程序壳的入口(含有pushad等类似字符)。接下来我们的目的是要寻找第一个popad 。
(1)首先按F8,接下来如果近处是CALL,此时的CALL或是离这里很近的CALL必须按F7,否则你就掉入陷井,后面遇到CALL一旦掉入也没关系,你先记下来,重新载入程序(按CTRL+F2),再遇到这个CALL时就用F7进入。
(2)出现往回跳转时,即红色线显示跳转实现,必须在下一行点左鍵,然后按F4步过,灰色为跳转未实现,可不理它照样F8。
(3)其他全部F8,一路下去必定能找到第一个popad,找到后离此不远必定有一个大的跳转,一旦跳转来到有push  ebp等字样,说明壳己走完到主程序(OEP),在此用OD插件→ollyDump→Dump debu…→Dump脱壳→保存。
4、破解:OD载入程序、点文件→打开→点击要破解的软件程序(无壳或己脱壳的)。
5、鼠标置左上(反汇编)窗口点右鍵,弹出框选项中选择ultra string reference(过激的字符串参考)中的Find  ASCII。
6、在弹出的窗口内查找第一步骤的注册信息内容或有关注册成功和注册失败的字符。如果找不到,建议你放弃或用其他方法破解,或另选其他软件,最好是年纪大些的(一般在2005年及以前的),在此,特别推荐你用这里的软件来练手http://www.fuzi.cn,我经过测试,全部都能成功
7、找到有关字符后,双击它,回到OD主窗口,在反汇编窗口(左上)中可以看到有关字符,然后就在字符上下附近寻找关键跳转(即跳向注册失败或注册成功处),在该跳转近处一般有一个就是关键CALL。
8、如果用爆破,就修改关键跳转(jnz改为jz,jz改为jnz等)。
9、如果是追注册码就在关键CALL这行下断点(按F2或双击鼠标),然后按F9运行后,会弹出软件注册对话框,随意输入注册信息后确定,这时注意观察右上的寄存器窗口会显示出你输入的假码和软件的真码,真码可以注册,而这个CALL可以用来做注册机。

下面,我给大家找来一个简单的软件演示一下实例:
【软件名称】现代汉语词典
【注册方式】确认码+注册码
【破解工具】PEiD  0.95   Ollydbg v1.10  keymake
1、查壳为ASPack 2.12 -> Alexey Solodovnikov
2、下面开始脱壳,首先用OD载入软件,分析项点“否”来到下面代码后,按下面方法操作:
a.        代码后面有括号注释的按注释操作;
b.        代码后面没有注释的全部按F8单步走;

0059F001 >  60              pushad
0059F002    E8 03000000     call    0059F00A         (按F7进入,因为这里的CALL离入口很近)
0059F007  - E9 EB045D45     jmp     45B6F4F7
0059F00C    55              push    ebp                             0059F00D    C3              retn
0059F00E    E8 01000000     call    0059F014         (按F7进入,因为这里的CALL离入口也很近,)
中间省略… …一路F8
0059F140  ^\EB EB           jmp     short 0059F12D      (这里显示往回跳已实现,因此不能按F8,用鼠标左键点下一行后,按F4步过)
0059F142    8B06            mov     eax, dword ptr [esi]
0059F144    EB 00           jmp     short 0059F146
0059F146    803E 1D         cmp     byte ptr [esi], 1D
0059F149  ^ 75 F3           jnz     short 0059F13E      (这里显示往回跳已实现,用鼠标左键点下一行后,按F4步过)
0059F14B    24 00           and     al, 0
0059F14D    C1C0 18         rol     eax, 18
0059F150    2BC3            sub     eax, ebx
0059F152    8906            mov     dword ptr [esi], eax
0059F154    83C3 05         add     ebx, 5
0059F157    83C6 04         add     esi, 4
0059F15A    83E9 05         sub     ecx, 5
0059F15D  ^ EB CE           jmp     short 0059F12D      (这里显示往回跳已实现,用鼠标左键点下一行后,按F4步过)
0059F15F    5B              pop     ebx                         
中间省略… …一路F8
0059F1A3  ^\0F85 1EFFFFFF   jnz     0059F0C7         (这里显示往回跳已实现,用鼠标左键点下一行后,按F4步过)
0059F1A9    68 00800000     push    8000
中间省略… …一路F8
0059F37F  ^\E9 32FFFFFF     jmp     0059F2B6         (这里显示往回跳已实现,用鼠标左键点下一行后,按F4步过)
0059F384    8906            mov     dword ptr [esi], eax            
0059F386    8946 0C         mov     dword ptr [esi+C], eax         
0059F389    8946 10         mov     dword ptr [esi+10], eax         
0059F38C    83C6 14         add     esi, 14
0059F38F    8B95 22040000   mov     edx, dword ptr [ebp+422]        
0059F395  ^ E9 EBFEFFFF     jmp     0059F285         (这里显示往回跳已实现,用鼠标左键点下一行后,按F4步过)
0059F39A    B8 EC0B1200     mov     eax, 120BEC
0059F39F    50              push    eax                              
0059F3A0    0385 22040000   add     eax, dword ptr [ebp+422]         
0059F3A6    59              pop     ecx                              
0059F3A7    0BC9            or      ecx, ecx                        
0059F3A9    8985 A8030000   mov     dword ptr [ebp+3A8], eax         
0059F3AF    61              popad              (注意:这里出现popad,估计离OEP不远了,继续F8)
0059F3B0    75 08           jnz     short 0059F3BA
0059F3B2    B8 01000000     mov     eax, 1
0059F3B7    C2 0C00         retn    0C
0059F3BA    68 00000000     push    0
0059F3BF    C3              retn               (这里返回到OEP入口处)
从上面程序返回直接跳到下面,这就是典型的OEP入口了。
00520BEC    55              push    ebp           (停在这里,OEP入口)
… …
3、在反汇编窗口点鼠标右键,选Dump debugged process在弹出对话框中点Dump后命名文件、保存,生成的文件便是已经脱壳的程序文件了。
接下来可以开始破解了:
1、查看注册信息:运行软件-任意输入注册信息注册-显示:“注册失败,请重试,重试失败请直接与作者联”的字样。2、用OD载入己脱壳的程序文件,程序停在OEP入口(注意看,这里己不是壳的入口了)。
3、鼠标置反汇编窗口中点右鍵,在弹出对话框中按选择Ultra String reference左键点Find ASCII在弹出窗口中寻找“注册失败,请重试,重试失败请直接与作者联”的字样。

4、双击“注册失败,请重试,重试失败请直接与作者联”后,来到OD反汇编口:
0051F011  |.  E8 CA5BEEFF   call    00404BE0
0051F016  |.  0F85 C0000000 jnz     0051F0DC
0051F01C  |.  A1 403A5200   mov     eax, dword ptr [523A40]
0051F021  |.  8B00          mov     eax, dword ptr [eax]
0051F023  |.  8B80 64030000 mov     eax, dword ptr [eax+364]
中间省略…
0051F0D3  |.  8BC3          mov     eax, ebx
0051F0D5  |.  E8 EE3EF4FF   call    00462FC8
0051F0DA  |.  EB 24         jmp     short 0051F100
0051F0DC  |>  B8 04F25100   mov     eax, 0051F204                    ;  注册失败,请重试,重试失败请直接与作者联系

我们顺着红线向上找关键跳转及关键CALL,可以看到注册失败由上方0051F016跳转而来。必是关键跳转了,它上面的CALL一般都是关键CALL(因为是初学我们暂不进入分析了)。
我在此介绍三种简单的破解方式,具体看以下内容操作。
(1)爆破:在关键跳转处的jnz改为jz或点右鍵→二进制→用nop填充。
(2)追注册码:在关键CALL处下断点,然后F9运行。
(3)注册机:利用上面的操作及参考寄存器窗口内容,用keymake(注册机编写器)制作。
(1)爆破:在0051F016这行将jnz改为jz或Nop填充
5、关键跳转修改后,点右鍵→复制到可执行文件→所有修改→(弹出对话框)点全部复制。

6、在新弹出窗口点右鍵,选择保存文件即可,至此爆破完成,运行软件随意输入即可注册成功。

(2)追注册码:
1、我们在关键CALL(0051F011)处下断点后,按F9运行程序弹出软件,选择注册项并任意输入注册信息,点确认注册,此时被OD断在0051F011处。
2、查看寄存器窗口,这里显示软件的真假码。在输入的假码下面EDX处显示的即是真码(注意:这里的真码与输入的确认码对应)。另须说明:当点确认注册后,OD会陆续弹出几个出错的对话框(说明软件有调用函数,既是初学,这里暂不去深究),可以直接点“否”,打开软件输入对应确认码和真码即可注册成功。

(3)注册机制作:
打开keymake软件,选择注册机-打开,在其他选项中选择内存注册机,在程序名称输入对应软件名称,在中断地址列表中依次填入:被中断地址的后三个字节51f011;中断次数1… …附件(注册机制作参考图19.jpg),点生成、确定、将注册机保存在软件的同一个文件夹内,大功告成。(注意:制作的注册机报病毒,是正常的,在意的话你就别做)

(4)点刚才保存的注册机弹出软件窗口,在注册栏随意输入,弹出注册码,选择注册码的一半即可注册成功。
附件下载: 注册机制作参考图 zcj.rar (124.49 KB, 下载次数: 160)
软件下载地址:http://www.fuzi.cn/showdown.asp?soft_id=64

[ 本帖最后由 yffgs 于 2008-9-14 22:44 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-16 20:49:38 | 显示全部楼层
我们顺着红线向上找关键跳转及关键CALL,可以看到注册失败由上方0051F016跳转而来。必是关键跳转了,它上面的CALL一般都是关键CALL(因为是初学我们暂不进入分析了)。


问一下,怎么显示红线找关键跳??我无意中显示过一次红线,好像现在不知道怎么找到显示它了。。

[ 本帖最后由 秋风四起 于 2008-9-16 21:05 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-17 08:27:49 | 显示全部楼层
楼主是原创,那就应该支持。顶一个。
PYG19周年生日快乐!

该用户从未签到

发表于 2008-9-17 08:49:52 | 显示全部楼层
我们顺着红线向上找关键跳转及关键CALL,可以看到注册失败由上方0051F016跳转而来。必是关键跳转了,它上面的CALL一般都是关键CALL(因为是初学我们暂不进入分析了)。


问一下,怎么显示红线找关键跳??我无意中显示过一次红线,好像现在不知道怎么找到显示它了。。

你把用鼠标点上那个跳红线就出来啦!
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-10 08:52
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-9-17 17:26:01 | 显示全部楼层
    之前看过一篇《0水平破解入门,手脱爆破追码注册机(图文)》,方法大同小异,语气都差不多,呵呵。这个就先不看了~   多练练。
    1. https://www.chinapyg.com/viewthread.php?tid=21713&page=1&authorid=30090
    复制代码
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2008-9-17 20:15:31 | 显示全部楼层
    原帖由 nietsme 于 2008-9-17 17:26 发表
    之前看过一篇《0水平破解入门,手脱爆破追码注册机(图文)》,方法大同小异,语气都差不多,呵呵。这个就先不看了~   多练练。https://www.chinapyg.com/viewthr ... &authorid=30090


    《0水平破解入门,手脱爆破追码注册机(图文)》是本人发表在龙族联盟论坛的原创作品http://www.chinadforce.com/viewt ... &extra=page%3D2,没想到已让人发表在此造成重复帖,抱歉!
    是否本人原创从文章内容可看得出,其中有这么一个内容:(3)注册机制作:可参照本版块yffgs的“追注册码和注册机制作,初学破解一看就会”的帖子。
    yffgs是本人在龙族联盟论坛和本论坛及各论坛的用户名.不信的可用百度搜索:yffgs。所涉及的yffgs皆为本人。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-9 01:01
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2008-9-17 22:44:49 | 显示全部楼层
    支持一下,原创的,分析的也很透彻。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-11-10 08:52
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-9-18 02:22:11 | 显示全部楼层
    原帖由 yffgs 于 2008-9-17 20:15 发表


    《0水平破解入门,手脱爆破追码注册机(图文)》是本人发表在龙族联盟论坛的原创作品http://www.chinadforce.com/viewt ... &extra=page%3D2,没想到已让人发表在此造成重复帖,抱歉!
    是否本人 ...



    支持原创!   :handshake
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-10-30 11:22
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2008-9-18 05:46:09 | 显示全部楼层
    谢谢分享,我先看了
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-10-30 11:22
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2008-9-18 05:46:48 | 显示全部楼层
    /:good 很好的教程
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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