注册码:666666666+5位以上任意字符
晕!原来是要细心分析的.. 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 编辑 ] 这个偶好象只是把壳搞定了~~~~
郁闷~~
继续学习~~ 原帖由 spc_cll 于 2006-6-16 00:46 发表
/////////////////////////////////////
sn=1357924680*18=24442644240
(1357924680是野猫III的手机号吧?是不是18岁了?)
/:D;P 还可以
继续努力吧。。。
页:
1
[2]