返回列表 发帖

3ast破解教程--3

自己做得语音教程,不是太好,还请见谅了。
以下是密码:
www.3ast.com.cn
希望大家多支持下我们的站。

                                                                    
                                                                     

                                                                           ★★★★★★★★★★★★★★★★★
                                                                                   破 解 系 列
                                                                                         3AST
                                                                                    WWW.3AST.COM.CN  
                                                              ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
                                          
                       
   【文章标题】: 内存注册机的编写
   【文章作者】: DoubleW
   【使用工具】: PEID,OllyDBG,Keymaker
   【软件信息】: 73,728 字节,MD5:6f672b8f5e63439835f6655ca60b46b0
   【下载地址】: CrackMe,已打包。
   【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
   【保护方式】: 用户名+注册码。
   【编写语言】: Microsoft Visual C++ 6.0
   【操作平台】: WinXP SP3
   【录制环境】:1280*800
   【作者声明】: 仅供技术交流……
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   【详细过程】
        这是一个CrackMe,是用户名+注册码的验证方式。

    首先,我们现查下壳,加的是ASPack 2.12 -> Alexey Solodovnikov的压缩壳,这个壳很好脱,用以前的方法,很快就可以脱掉,为了复习一下以前的内容,我们手动脱壳。
   首先用OD载入,代码停在如下位置:
00413001 >  60              pushad                          // 载入时停的位置
00413002    E8 03000000     call    0041300A                //这里要用 F7 过              
00413007  - E9 EB045D45     jmp     459E34F7
0041300C    55              push    ebp
0041300D    C3              retn
0041300E    E8 01000000     call    00413014
00413013    EB 5D           jmp     short 00413072
00413015    BB EDFFFFFF     mov     ebx, -13
0041301A    03DD            add     ebx, ebp
0041301C    81EB 00300100   sub     ebx, 13000
00413022    83BD 22040000 0>cmp     dword ptr [ebp+422], 0
00413029    899D 22040000   mov     dword ptr [ebp+422], ebx
0041302F    0F85 65030000   jnz     0041339A

   然后往下一直是用F8过,遇到往上的跳转就跳过,继续往下执行,直到运行到如下位置:
0041339A      B8 763A0000     mov     eax, 3A76
0041339F      50              push    eax
004133A0      0385 22040000   add     eax, dword ptr [ebp+422]
004133A6      59              pop     ecx
004133A7      0BC9            or      ecx, ecx
004133A9      8985 A8030000   mov     dword ptr [ebp+3A8], eax
004133AF      61              popad
004133B0      75 08           jnz     short 004133BA
004133B2      B8 01000000     mov     eax, 1
004133B7      C2 0C00         retn    0C
004133BA      68 763A4000     push    00403A76
004133BF      C3              retn                             //这里跳到的地方就是OEP了。

   跳到了这里:
00403A76      55              push    ebp                      // 这里就是OEP了。
00403A77      8BEC            mov     ebp, esp
00403A79      6A FF           push    -1
00403A7B      68 50B24000     push    0040B250
00403A80      68 40764000     push    00407640
00403A85      64:A1 00000000  mov     eax, dword ptr fs:[0]
00403A8B      50              push    eax
00403A8C      64:8925 0000000>mov     dword ptr fs:[0], esp
   我们就在这里脱壳。
   运行一下,可以。
   脱壳后的程序可以看到是用 Microsoft Visual C++ 6.0写得,我们再用Loader.exe为程序减减肥。
程序的体积小了不少。
   下面我们进入本节课的正题,最注册码,写注册机。

   首先运行程序,填写用户名,注册码,注册,有错误提示。

   然后我们OD载入后停在这:
00403A76 >/$  55            push    ebp                              ;  (初始 cpu 选择)
00403A77  |.  8BEC          mov     ebp, esp
00403A79  |.  6A FF         push    -1
00403A7B  |.  68 50B24000   push    0040B250
00403A80  |.  68 40764000   push    00407640                         ;  SE 处理程序安装

   查找字符串:   
地址       反汇编                                    文本字串
004018F0   mov     edi, 0040D0A8                     filedigest error: in cmd5::adddata(), data length should be >= 0!
00401929   mov     esi, 0040D0A8                     filedigest error: in cmd5::adddata(), data length should be >= 0!
00401ACC   mov     edi, 0040D0EC                     filedigest error: in cmd5::finaldigest(), no data added before call!
00401B06   mov     esi, 0040D0EC                     filedigest error: in cmd5::finaldigest(), no data added before call!
0040288A   push    0040D1A4                          注册提示
0040288F   push    0040D18C                          用户名不能为空请输入!
004028CE   push    0040D1A4                          注册提示
004028D3   push    0040D174                          注册码不能为空请输入!
0040291C   push    0040D1A4                          注册提示
00402923   push    0040D160                          恭喜你,注册码正确!注册码不能为空请输入!
0040293B   push    0040D148                          注册码错误,继续加油!
00402D35   mov     esi, 0040B158                     invalid string position
0040306D   mov     eax, 0040B214                     unknown exception
00403A76   push    ebp                               (初始 cpu 选择)
   
我们随便选个注册提示的地方双击进去看看。
以下是程序的主要部分。

00402857   .  8B2D D0B04000 mov     ebp, dword ptr [<&user32.GetDlgI>;  user32.GetDlgItemTextA  //我们在这里下断
0040285D   .  8D8C24 0C0100>lea     ecx, dword ptr [esp+10C]
00402864   .  68 00010000   push    100                              ; /Count = 100 (256.)
00402869   .  51            push    ecx                              ; |Buffer
0040286A   .  68 E8030000   push    3E8                              ; |ControlID = 3E8 (1000.)
0040286F   .  56            push    esi                              ; |hWnd
00402870   .  FFD5          call    ebp                              ; \GetDlgItemTextA
00402872   .  8DBC24 0C0100>lea     edi, dword ptr [esp+10C]
00402879   .  83C9 FF       or      ecx, FFFFFFFF
0040287C   .  33C0          xor     eax, eax
0040287E   .  F2:AE         repne   scas byte ptr es:[edi]
00402880   .  F7D1          not     ecx
00402882   .  49            dec     ecx
00402883   .  83F9 01       cmp     ecx, 1
00402886   .  73 1F         jnb     short 004028A7
00402888   .  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0040288A   .  68 A4D14000   push    0040D1A4                         ; |注册提示
0040288F   .  68 8CD14000   push    0040D18C                         ; |用户名不能为空请输入!
00402894   .  56            push    esi                              ; |hOwner
00402895   .  FF15 D4B04000 call    dword ptr [<&user32.MessageBoxA>>; \MessageBoxA
0040289B   .  5F            pop     edi
0040289C   .  5E            pop     esi
0040289D   .  33C0          xor     eax, eax
0040289F   .  5D            pop     ebp
004028A0   .  81C4 00030000 add     esp, 300
004028A6   .  C3            retn
004028A7   >  8D5424 0C     lea     edx, dword ptr [esp+C]
004028AB   .  68 00010000   push    100
004028B0   .  52            push    edx
004028B1   .  68 07040000   push    407
004028B6   .  56            push    esi
004028B7   .  FFD5          call    ebp
004028B9   .  8D7C24 0C     lea     edi, dword ptr [esp+C]
004028BD   .  83C9 FF       or      ecx, FFFFFFFF
004028C0   .  33C0          xor     eax, eax
004028C2   .  F2:AE         repne   scas byte ptr es:[edi]
004028C4   .  F7D1          not     ecx
004028C6   .  49            dec     ecx
004028C7   .  83F9 01       cmp     ecx, 1
004028CA   .  73 1F         jnb     short 004028EB
004028CC   .  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
004028CE   .  68 A4D14000   push    0040D1A4                         ; |注册提示
004028D3   .  68 74D14000   push    0040D174                         ; |注册码不能为空请输入!
004028D8   .  56            push    esi                              ; |hOwner
004028D9   .  FF15 D4B04000 call    dword ptr [<&user32.MessageBoxA>>; \MessageBoxA
004028DF   .  5F            pop     edi
004028E0   .  5E            pop     esi
004028E1   .  33C0          xor     eax, eax
004028E3   .  5D            pop     ebp
004028E4   .  81C4 00030000 add     esp, 300
004028EA   .  C3            retn
004028EB   >  8D8424 0C0200>lea     eax, dword ptr [esp+20C]
004028F2   .  6A 00         push    0
004028F4   .  8D8C24 100100>lea     ecx, dword ptr [esp+110]
004028FB   .  50            push    eax
004028FC   .  51            push    ecx                              ;  将注册名放到了ECX寄存器中
004028FD   .  E8 FEFCFFFF   call    00402600                         ;  这里的call是将我们的注册名进行运算
00402902   .  8D9424 180200>lea     edx, dword ptr [esp+218]         ;  注册码出现,也就预示着我们做注册机时机的到来。
00402909   .  8D4424 18     lea     eax, dword ptr [esp+18]
0040290D   .  52            push    edx                              ;  将EDX寄存器中真的注册码入栈
0040290E   .  50            push    eax                              ;  将EAX中我们输入的假注册码压入栈中
0040290F   .  E8 CCFDFFFF   call    004026E0
00402914   .  83C4 14       add     esp, 14
00402917   .  83F8 01       cmp     eax, 1
0040291A   .  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0040291C   .  68 A4D14000   push    0040D1A4                         ; |注册提示
00402921   .  75 18         jnz     short 0040293B                   ; |
00402923   .  68 60D14000   push    0040D160                         ; |恭喜你,注册码正确!
00402928   .  56            push    esi                              ; |hOwner
00402929   .  FF15 D4B04000 call    dword ptr [<&user32.MessageBoxA>>; \MessageBoxA
0040292F   .  5F            pop     edi
00402930   .  5E            pop     esi
00402931   .  33C0          xor     eax, eax
00402933   .  5D            pop     ebp
00402934   .  81C4 00030000 add     esp, 300
0040293A   .  C3            retn
0040293B   >  68 48D14000   push    0040D148                         ; |注册码错误,继续加油!
00402940   .  56            push    esi                              ; |hOwner
00402941   .  FF15 D4B04000 call    dword ptr [<&user32.MessageBoxA>>; \MessageBoxA

注册机:
中断地址:00402902
中断次数:1
第一字节:8D
指令长度:7
内存方式:EAX

00402902   .  8D9424 18020000        lea     edx, dword ptr [esp+218]         ;  注册码出现,也就是我们写注册机的好时候。



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   【经验总结】

    断点下的要准,写内存注册机找的位置要准。。。。。。。。。。

    如果还有什么不太明白的地方,可以到

    www.3ast.com.cn

    来找我,我们一起探讨。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   【版权声明】: 转载请注明出处,并保证文章的完整性!

[ 本帖最后由 chowfaye 于 2008-9-29 10:09 编辑 ]
努力的使自己堕落,却发现自己是那么的优秀!

教程我就不上传了,又需要的我传给他
努力的使自己堕落,却发现自己是那么的优秀!

TOP

努力的使自己堕落,却发现自己是那么的优秀!

TOP

做好事怎么不留下你的QQ呢。
不然怎么传啊。

TOP

上面有地址了
努力的使自己堕落,却发现自己是那么的优秀!

TOP

返回列表