- UID
- 8608
注册时间2006-2-27
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 擦汗 2020-7-7 10:06 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
发表于 2006-6-16 00:46:05
|
显示全部楼层
1.在004051E2设置条件断点 eax==400000,然后运行
2.在00403CC5设置断点(异常处理程序入口),然后运行,中断后,单步来到:
00403B34 . 51 push ecx
00403B35 . 51 push ecx
00403B36 . FF95>call [ebp+790]
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:[edi]
00405105 61 popad
00405106 66:9D popfw
00405108 83C4 0C add esp, 0C
0040510B >- E9 F0C0FFFF jmp 00401200 ; vb程序入口
3.跳到00401200后,即可脱壳了。
4.脱壳后,Load刚脱壳出来的程序,
Ctrl+N,找到_VbaLenBstr,并在调用该函数的地方设置断点.
然后运行,随便输入一个字符串,如:12121212,点确定,程序中断在断点处:
004029E8 . FF15 10104>call [<&MSVBVM60.__vbaLenBstr>] ; MSVBVM60.__vbaLenBstr
004029EE . 8B4D D8 mov ecx, [ebp-28]
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 [403000], 0
00402A9A . 75 08 jnz short 00402AA4
00402A9C . DC35 A8104>fdiv qword ptr [4010A8] ; sn/18
00402AA2 . EB 11 jmp short 00402AB5
。。。
00402ACC . 8D45 B0 lea eax, [ebp-50]
00402ACF . 50 push eax ;[eax]=sn/18
00402AD0 . 51 push ecx ;[ecx]=[0012F4E0]=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 编辑 ] |
|