中国飘云阁Crack组织Crackme2.0破解分析
【破文作者】qxtianlong【所属组织】无
【作者主页】http://qxtianlong.77169.com
【 E-mail 】[email protected]
【 作者QQ 】249935058
【文章题目】Crackme的详解
【软件名称】中国飘云阁Crack组织Crackme2.0
【下载地址】Crackme
【加密方式】固定注册码
【加壳方式】无
【Crack工具】OD
【软件限制】无
【Crack平台】wxp
=======================================================================================================
【软件简介】
Crackme生存的唯一目的就是让我们练手之用!
=======================================================================================================
【文章简介】
我的Crack很菜,写这篇东西是给对这个 crackme 有兴趣的兄弟们,分享一下Crack心得
=======================================================================================================
【解密过程】
PEID查壳,无壳,VB程序非p-code,OD载入,下断点bp __vbaLenBstr断在
660248CB M>8B4424 04 mov eax,dword ptr ss://断在这里
660248CF 85C0 test eax,eax
660248D1 74 05 je short MSVBVM60.660248D8
660248D3 8B40 FC mov eax,dword ptr ds:
660248D6 D1E8 shr eax,1
660248D8 C2 0400 retn 4 //F8过
//上面是一个求字符串长度的一个过程返回
004029EE 8B4D D8 mov ecx,dword ptr ss://来到这里
004029F1 33DB xor ebx,ebx
004029F3 83F8 0C cmp eax,0C
004029F6 51 push ecx
004029F7 0F9EC3 setle bl
004029FA FF15 10104000 call dword ptr ds:[<&MSVBVM60.__vbaL>; MSVBVM60.__vbaLenBstr//字符串长度
00402A00 F7D8 neg eax
00402A02 1BC0 sbb eax,eax
00402A04 F7D8 neg eax
00402A06 85D8 test eax,ebx
00402A08 75 7F jnz short 2_0.00402A89
00402A0A 8B16 mov edx,dword ptr ds:
00402A0C 56 push esi
00402A0D FF92 08030000 call dword ptr ds:
00402A13 50 push eax
00402A14 8D45 D0 lea eax,dword ptr ss:
00402A17 50 push eax
00402A18 FFD7 call edi
00402A1A 8BD8 mov ebx,eax
00402A1C 68 B4214000 push 2_0.004021B4
00402A21 53 push ebx
00402A22 8B0B mov ecx,dword ptr ds:
00402A24 FF51 54 call dword ptr ds:
00402A27 85C0 test eax,eax
00402A29 DBE2 fclex
00402A2B 7D 0F jge short 2_0.00402A3C
00402A2D 6A 54 push 54
00402A2F 68 CC214000 push 2_0.004021CC
00402A34 53 push ebx
00402A35 50 push eax
00402A36 FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaH>; MSVBVM60.__vbaHresultCheckObj
00402A3C 8B1D 94104000 mov ebx,dword ptr ds:[<&MSVBVM60.__v>; MSVBVM60.__vbaFreeObj
00402A42 8D4D D0 lea ecx,dword ptr ss:
00402A45 FFD3 call ebx
00402A47 8B16 mov edx,dword ptr ds:
00402A49 56 push esi
00402A4A FF92 00030000 call dword ptr ds:
00402A50 50 push eax
00402A51 8D45 D0 lea eax,dword ptr ss:
00402A54 50 push eax
00402A55 FFD7 call edi
00402A57 8BF0 mov esi,eax
00402A59 68 E0214000 push 2_0.004021E0
00402A5E 56 push esi
00402A5F 8B0E mov ecx,dword ptr ds:
00402A61 FF91 A4000000 call dword ptr ds:
00402A67 85C0 test eax,eax
00402A69 DBE2 fclex
00402A6B 7D 12 jge short 2_0.00402A7F
00402A6D 68 A4000000 push 0A4
00402A72 68 A0214000 push 2_0.004021A0
00402A77 56 push esi
00402A78 50 push eax
00402A79 FF15 1C104000 call dword ptr ds:[<&MSVBVM60.__vbaH>; MSVBVM60.__vbaHresultCheckObj
00402A7F 8D4D D0 lea ecx,dword ptr ss:
00402A82 FFD3 call ebx
00402A84 E9 0A010000 jmp 2_0.00402B93
00402A89 8B55 D8 mov edx,dword ptr ss:
00402A8C 52 push edx
00402A8D FF15 9C104000 call dword ptr ds:[<&MSVBVM60.#581>] ; MSVBVM60.rtcR8ValFromBstr//转化为浮点数
00402A93 833D 00304000 00 cmp dword ptr ds:,0
00402A9A 75 08 jnz short 2_0.00402AA4
00402A9C DC35 A8104000 fdiv qword ptr ds://做浮点除法运算,注意ds:的值
00402AA2 EB 11 jmp short 2_0.00402AB5
00402AA4 FF35 AC104000 push dword ptr ds:
00402AAA FF35 A8104000 push dword ptr ds:
00402AB0 E8 7FE6FFFF call
00402AB5 8D4D DC lea ecx,dword ptr ss:
00402AB8 C745 B0 05800000 mov dword ptr ss:,8005
00402ABF DD5D B8 fstp qword ptr ss:
00402AC2 DFE0 fstsw ax
00402AC4 A8 0D test al,0D
00402AC6 0F85 24010000 jnz 2_0.00402BF0
00402ACC 8D45 B0 lea eax,dword ptr ss:
00402ACF 50 push eax
00402AD0 51 push ecx
00402AD1 FF15 3C104000 call dword ptr ds:[<&MSVBVM60.__vbaV>; MSVBVM60.__vbaVarTstEq//做比较的函数
F7跟进去,里面有一个CALL跟进去
77100867 DD46 08 fld qword ptr ds://装入浮点寄存器
7710086A DC5B 08 fcomp qword ptr ds://比较
下面我不跟了,大家自己慢慢发现吧
00402AD7 66:85C0 test ax,ax
00402ADA 74 7C je short 2_0.00402B58//这里可以爆破
OK
【解密心得】
=======================================================================================================
浮点运算,注意FPU浮点寄存器的值,多了解一些协处理器的指令,这个Crackme对你应该不难的
固定注册码类型,把你输入的内容转化为浮点形式,然后除以18的值和1357924680比较,相等就成功,不等就死啦!1357824680*18=24442644240
算法注册机我就不写了,计算器自己算一下就OK啦,关键在于协处理器指令的掌握
【Crack声明】我是一个小小菜虫子,文章如有错误,请高手指正!
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
=======================================================================================================
2005-10-20 夜 不错啊! 沉了很久的东西被你翻上来了!
加精! 向飘云老大学习,在程序中体会乐趣,在破解中体会思想,在程序中融于思想 非常不错!
厉害!
收藏! Originally posted by qxtianlong at17:21:
向飘云老大学习,在程序中体会乐趣,在破解中体会思想,在程序中融于思想
向所有的高手学习 先向楼主学习,然后再向老大学习... 三人行,必有我师。向所有人学习~~!
冷血书生,让我看到你了/:D
页:
[1]