qxtianlong 发表于 2005-10-21 10:45:29

中国飘云阁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 夜

飘云 发表于 2005-10-21 11:48:26

不错啊! 沉了很久的东西被你翻上来了!
加精!

qxtianlong 发表于 2005-10-21 17:21:12

向飘云老大学习,在程序中体会乐趣,在破解中体会思想,在程序中融于思想

冷血书生 发表于 2005-10-23 10:29:36

非常不错!

厉害!

收藏!

zhangyino2 发表于 2005-10-31 18:38:57

Originally posted by qxtianlong at17:21:
向飘云老大学习,在程序中体会乐趣,在破解中体会思想,在程序中融于思想


向所有的高手学习

盗帅 发表于 2005-11-29 00:24:34

先向楼主学习,然后再向老大学习...

dewar 发表于 2007-1-12 12:46:26

三人行,必有我师。向所有人学习~~!
冷血书生,让我看到你了/:D
页: [1]
查看完整版本: 中国飘云阁Crack组织Crackme2.0破解分析