- UID
- 38488
注册时间2007-12-1
阅读权限8
最后登录1970-1-1
初入江湖
该用户从未签到
|
本帖最后由 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 编辑 ] |
|