野猫III 发表于 2006-6-13 20:29:09

原帖由 ZHOU2X 于 2006-6-13 14:02 发表
注册码:666666666+5位以上任意字符

晕!原来是要细心分析的..

spc_cll 发表于 2006-6-16 00:46:05

1.在004051E2设置条件断点 eax==400000,然后运行
2.在00403CC5设置断点(异常处理程序入口),然后运行,中断后,单步来到:
00403B34   .51   push    ecx   
00403B35   .51   push    ecx
00403B36   .FF95>call   
00403B3C   .85C0 test    eax, eax                                 ;MSVBVM60.#1374
00403B3E   .0F84>je      00403C2A
。。。
00405102    5F         pop   edi                           ; CrackMe2.00403D58
00405103    F3:AA      rep   stos byte ptr es:
00405105    61         popad
00405106    66:9D      popfw
00405108    83C4 0C      add   esp, 0C
0040510B >- E9 F0C0FFFFjmp   00401200                        ; vb程序入口

3.跳到00401200后,即可脱壳了。
4.脱壳后,Load刚脱壳出来的程序,
   Ctrl+N,找到_VbaLenBstr,并在调用该函数的地方设置断点.
然后运行,随便输入一个字符串,如:12121212,点确定,程序中断在断点处:
004029E8   .FF15 10104>call    [<&MSVBVM60.__vbaLenBstr>] ;MSVBVM60.__vbaLenBstr
004029EE   .8B4D D8    mov   ecx,
004029F1   .33DB       xor   ebx, ebx
004029F3   .83F8 0C    cmp   eax, 0C                           ;sn长度=12?
004029F6   .51         push    ecx
004029F7   .0F9EC3   setle   bl
004029FA   .FF15 10104>call    [<&MSVBVM60.__vbaLenBstr>]; MSVBVM60.__vbaLenBstr
向上找,来到:
004027C0   > \55         push    ebp
004027C1   .8BEC       mov   ebp, esp
004027C3   .83EC 0C    sub   esp, 0C
在004027C0设置断点,这是点确定按钮的处理函数开始处
。。。
F8来到这里:
00402A8C   .52         push    edx                                 ;EDX=SN转换为实数
00402A8D   .FF15 9C104>call    [<&MSVBVM60.rtcR8ValFromBstr>]      ;MSVBVM60.rtcR8ValFromBstr
00402A93   .833D 00304>cmp   dword ptr , 0
00402A9A   .75 08      jnz   short 00402AA4
00402A9C   .DC35 A8104>fdiv    qword ptr                   ;sn/18
00402AA2   .EB 11      jmp   short 00402AB5
。。。
00402ACC   .8D45 B0    lea   eax,
00402ACF   .50         push    eax          ;=sn/18
00402AD0   .51         push    ecx          ;==1357924680.000000
00402AD1   .FF15 3C104>call    [<&MSVBVM60.__vbaVarTstEq>]          ;MSVBVM60.__vbaVarTstEq
00402AD7   .66:85C0    test    ax, ax
00402ADA   .74 7C      je      short 00402B58
相等,则显示:"666666666   "
不相等则显示:"44444444"
/////////////////////////////////////
sn=1357924680*18=24442644240
(1357924680是野猫III的手机号吧?是不是18岁了?)

[ 本帖最后由 spc_cll 于 2006-6-16 00:53 编辑 ]

网游难民 发表于 2006-6-30 01:08:29

这个偶好象只是把壳搞定了~~~~
郁闷~~
继续学习~~

飘云 发表于 2006-6-30 20:48:17

原帖由 spc_cll 于 2006-6-16 00:46 发表
/////////////////////////////////////
sn=1357924680*18=24442644240
(1357924680是野猫III的手机号吧?是不是18岁了?)
/:D;P

sybaser 发表于 2006-7-4 18:31:07

还可以
继续努力吧。。。
页: 1 [2]
查看完整版本: PYG 5.4 Cracker 小组 课外练习20