| 
注册时间2005-9-17
阅读权限20
最后登录1970-1-1UID3169 以武会友  
 
 该用户从未签到 | 
 
| 【破文作者】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:[esp+4]//断在这里
 660248CF     85C0               test eax,eax
 660248D1     74 05              je short MSVBVM60.660248D8
 660248D3     8B40 FC            mov eax,dword ptr ds:[eax-4]
 660248D6     D1E8               shr eax,1
 660248D8     C2 0400            retn 4 //F8过
 //上面是一个求字符串长度的一个过程返回
 004029EE     8B4D D8            mov ecx,dword ptr ss:[ebp-28]//来到这里
 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:[esi]
 00402A0C     56                 push esi
 00402A0D     FF92 08030000      call dword ptr ds:[edx+308]
 00402A13     50                 push eax
 00402A14     8D45 D0            lea eax,dword ptr ss:[ebp-30]
 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:[ebx]
 00402A24     FF51 54            call dword ptr ds:[ecx+54]
 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:[ebp-30]
 00402A45     FFD3               call ebx
 00402A47     8B16               mov edx,dword ptr ds:[esi]
 00402A49     56                 push esi
 00402A4A     FF92 00030000      call dword ptr ds:[edx+300]
 00402A50     50                 push eax
 00402A51     8D45 D0            lea eax,dword ptr ss:[ebp-30]
 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:[esi]
 00402A61     FF91 A4000000      call dword ptr ds:[ecx+A4]
 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:[ebp-30]
 00402A82     FFD3               call ebx
 00402A84     E9 0A010000        jmp 2_0.00402B93
 00402A89     8B55 D8            mov edx,dword ptr ss:[ebp-28]
 00402A8C     52                 push edx
 00402A8D     FF15 9C104000      call dword ptr ds:[<&MSVBVM60.#581>] ; MSVBVM60.rtcR8ValFromBstr//转化为浮点数
 00402A93     833D 00304000 00   cmp dword ptr ds:[403000],0
 00402A9A     75 08              jnz short 2_0.00402AA4
 00402A9C     DC35 A8104000      fdiv qword ptr ds:[4010A8]//做浮点除法运算,注意ds:[004010a8]的值
 00402AA2     EB 11              jmp short 2_0.00402AB5
 00402AA4     FF35 AC104000      push dword ptr ds:[4010AC]
 00402AAA     FF35 A8104000      push dword ptr ds:[4010A8]
 00402AB0     E8 7FE6FFFF        call
 00402AB5     8D4D DC            lea ecx,dword ptr ss:[ebp-24]
 00402AB8     C745 B0 05800000   mov dword ptr ss:[ebp-50],8005
 00402ABF     DD5D B8            fstp qword ptr ss:[ebp-48]
 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:[ebp-50]
 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:[esi+8]//装入浮点寄存器
 7710086A     DC5B 08            fcomp qword ptr ds:[ebx+8]//比较
 下面我不跟了,大家自己慢慢发现吧
 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 夜
 | 
 |