沙粒 发表于 2006-8-5 13:00:57

我来个完整的,在家一起学!!

peid查壳是:nSPack 1.3 -> North Star/Liu Xing Ping,手动脱壳方式一,
004506A0    55            push ebp       脱壳处
不能运行,用import修复,可以运行!
peid查是:Borland Delphi 6.0写的
****输入注册信息:用户名:MINGBIN序列号:789789789 ****
出现错误提示:序列号不对啊,请再试试!
Ultra 字符串参考,项目 202
地址=004503CE
反汇编=push unCrackm.00450478
文本字符串=序列号不对呀,请再试试!
**************************************************************************************************
爆破点:
004503AA   /74 1B   jne short unCrackm.004503C7改为:jz 就可以了,随便你输入了!
**************************************************************************************************
追码的过程:
004502C3    8BF0            mov esi,eax
004502C5    33C0            xor eax,eax
004502C7    55            push ebp
004502C8    68 18044500   push unCrackm.00450418
004502CD    64:FF30         push dword ptr fs:
004502D0    64:8920         mov dword ptr fs:,esp
004502D3    8D55 F4         lea edx,dword ptr ss:
004502D6    8B86 F8020000   mov eax,dword ptr ds:
004502DC    E8 17F2FDFF   call unCrackm.0042F4F8                  ; 取用户名
004502E1    837D F4 00      cmp dword ptr ss:,0                ; 比较用户名是不是为空
004502E5    75 1E         jnz short unCrackm.00450305               ; 不为空则跳走,否则向下继续执行
004502E7    6A 30         push 30
004502E9    68 28044500   push unCrackm.00450428                  ; ASCII "Error:"
004502EE    68 30044500   push unCrackm.00450430
004502F3    8BC6            mov eax,esi
004502F5    E8 7258FEFF   call unCrackm.00435B6C
004502FA    50            push eax
004502FB    E8 3C6AFBFF   call <jmp.&user32.MessageBoxA>            ; 用户名为空出错
00450300    E9 DB000000   jmp unCrackm.004503E0
00450305    8D55 F0         lea edx,dword ptr ss:
00450308    8B86 F8020000   mov eax,dword ptr ds:            ; 用户名的位数送eax=7
0045030E    E8 E5F1FDFF   call unCrackm.0042F4F8
00450313    8B45 F0         mov eax,dword ptr ss:             ; 用户名的位数送eax=7
00450316    E8 A941FBFF   call unCrackm.004044C4
0045031B    83F8 04         cmp eax,4                                 ; 用户名的位数eax=7与4比较
0045031E    7D 1E         jge short unCrackm.0045033E               ; 大于等于4则跳,否则向下运行
00450320    6A 30         push 30
00450322    68 28044500   push unCrackm.00450428                  ; ASCII "Error:"
00450327    68 48044500   push unCrackm.00450448
0045032C    8BC6            mov eax,esi
0045032E    E8 3958FEFF   call unCrackm.00435B6C
00450333    50            push eax
00450334    E8 036AFBFF   call <jmp.&user32.MessageBoxA>            ; 小于4出错
00450339    E9 A2000000   jmp unCrackm.004503E0
0045033E    8D55 F8         lea edx,dword ptr ss:
00450341    8B86 F8020000   mov eax,dword ptr ds:            ; 用户名的位数eax=7
00450347    E8 ACF1FDFF   call unCrackm.0042F4F8
0045034C    8D55 EC         lea edx,dword ptr ss:
0045034F    8B86 F8020000   mov eax,dword ptr ds:
00450355    E8 9EF1FDFF   call unCrackm.0042F4F8
0045035A    8B45 EC         mov eax,dword ptr ss:
0045035D    E8 6241FBFF   call unCrackm.004044C4
00450362    8BD8            mov ebx,eax                               ; ebx=7
00450364    85DB            test ebx,ebx                              ; 测试ebx
00450366    7E 29         jle short unCrackm.00450391               ; 小于或等于转移
00450368    BF 01000000   mov edi,1                                 ; edi=1
0045036D    8B45 F8         mov eax,dword ptr ss:            ; eax=7
00450370    0FB64438 FF   movzx eax,byte ptr ds:         ; 逐位取用户名ascii
00450375    8D4D E8         lea ecx,dword ptr ss:
00450378    BA 02000000   mov edx,2
0045037D    E8 8E7FFBFF   call unCrackm.00408310
00450382    8B55 E8         mov edx,dword ptr ss:             ; edx=逐位取用户名ascii
00450385    8D45 FC         lea eax,dword ptr ss:
00450388    E8 3F41FBFF   call unCrackm.004044CC
0045038D    47            inc edi                                 ; edi=edi+1计数逐渐加
0045038E    4B            dec ebx                                 ; ebx=ebx-1位数逐渐减
0045038F^ 75 DC         jnz short unCrackm.0045036D               ; edi与ebx不相等循环,相等向下运行
00450391    8D55 E4         lea edx,dword ptr ss:
00450394    8B86 00030000   mov eax,dword ptr ds:
0045039A    E8 59F1FDFF   call unCrackm.0042F4F8
0045039F    8B45 E4         mov eax,dword ptr ss:             ; 试验码位数送入eax=9
004503A2    8B55 FC         mov edx,dword ptr ss:            ; 注册码送入edx=4D494E4742494E
004503A5    E8 5E42FBFF   call unCrackm.00404608                  ; 两码比较的call
004503AA    75 1B         jnz short unCrackm.004503C7               ; 不相等向下跳,否则继续运行
004503AC    6A 40         push 40
004503AE    68 60044500   push unCrackm.00450460                  ; ASCII "ok:"
004503B3    68 64044500   push unCrackm.00450464
004503B8    8BC6            mov eax,esi
004503BA    E8 AD57FEFF   call unCrackm.00435B6C
004503BF    50            push eax
004503C0    E8 7769FBFF   call <jmp.&user32.MessageBoxA>
004503C5    EB 19         jmp short unCrackm.004503E0
004503C7    6A 30         push 30
004503C9    68 28044500   push unCrackm.00450428                  ; ASCII "Error:"
004503CE    68 78044500   push unCrackm.00450478
004503D3    8BC6            mov eax,esi
004503D5    E8 9257FEFF   call unCrackm.00435B6C
004503DA    50            push eax
004503DB    E8 5C69FBFF   call <jmp.&user32.MessageBoxA>            ; 出错信息框
注册机的制作:
004503A5    E8 5E42FBFF   call unCrackm.00404608
中断地址:004503A5
中断次数:1
第一字节:E8
指令长度:5
内在方式:寄存器edx
地址指针:1层(否则会出现两次注册码)
注册码形成过程:
注册码=注册名每个字符串的ASC‖相连而成
************我是菜鸟,还有很多不明白,请指教!******************

xyyh816 发表于 2007-1-16 09:16:07

多谢分享,下载学习:P

hy00lhy00 发表于 2007-1-20 16:33:32

支持!~~~
学习~~

lixy8888 发表于 2008-8-6 08:55:01

简单,适合新手

小生我怕怕 发表于 2008-8-15 03:51:37

x80x88 发表于 2008-8-16 10:37:07

继续路过,脱了一切就OK了/:017

夜冷风 发表于 2008-8-16 12:25:40

/:013 /:013 /:013 :loveliness:
页: 1 2 [3]
查看完整版本: PYG 5.4 Cracker 小组 课外练习13