Chief 发表于 2012-5-1 06:22

吾爱破解2012CM大赛破文-淡然出尘

本帖最后由 Chief 于 2013-1-5 22:58 编辑

【文章标题】: 吾爱破解2012CM大赛破文-淡然出尘
【文章作者】: Chief
【作者邮箱】: hi_Chief@163.com
【下载地址】: http://down.52pojie.cn/2012CM/%E ... %E5%87%BA%E5%B0%98/
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【难      度】: 中
--------------------------------------------------------------------------------
【详细过程】

VB程序代码稍微比较多,慢慢玩
双击程序,运行看看,啊?无反应。

现在载入OD---F9运行,额,原来一运行就退出。
怎么办呢?
重载,别运行,搜索UINCODE
来到
0040143C   push CrackMe.00408154                     (Initial CPU selection)
004086F7   push CrackMe.004086D4                     蚴@蛄@
004087B3   push CrackMe.00408790                     蝤@蝴@
004087FB   push CrackMe.004087D8                     蝤@蝈@
00408843   push CrackMe.00408820                     蝤@蛴@
00409AA8   push CrackMe.004088E8                     \
00409AD5   push CrackMe.004088F0                     .exe
00409B2E   mov dword ptr ss:,CrackMe.0040YYYYMMDDHHMMSS
00409B9B   push CrackMe.00408924                     20120409080810
00409E6A   mov dword ptr ss:,CrackMe.00400
00409E7E   mov dword ptr ss:,CrackMe.00409
0040A71C   push CrackMe.00408990                     未注册
0040A74B   mov edx,CrackMe.0040899C                  ollydbg.exe
0040A766   mov edx,CrackMe.004089B8                  exescope.exe
0040A781   mov edx,CrackMe.004089D8                  冰封溪谷.exe
0040A79C   mov edx,CrackMe.004089F0                  SMARTCHECK.exe
0040A7B7   mov edx,CrackMe.00408A14                  吾爱破解.exe
0040A9FF   push CrackMe.00408A2C                     CrackMe By自浩
0040AB20   push CrackMe.00408A5C                     http://www.52pojie.cn/?fromuid=185372
0040AB2C   push CrackMe.00408A4C                     open
0040AC50   push CrackMe.00408AAC                     http://www.52pojie.cn/thread-141805-1-1.html
0040AC5C   push CrackMe.00408A4C                     open
0040AE79   push CrackMe.00408B0C                     请输入数字和字母的混合字符串!
0040B2EB   push CrackMe.004088E8                     \
0040B30E   push CrackMe.004088F0                     .exe双击 0040A71C   push CrackMe.00408990                     未注册
往上
来到断首0040A6A0   > \55            push ebp
0040A6A1   .8BEC          mov ebp,esp
0040A6A3   .83EC 0C       sub esp,0xC
0040A6A6   .68 86124000   push <jmp.&MSVBVM60.__vbaExceptHandler>;SE 处理程序安装
0040A6AB   .64:A1 0000000>mov eax,dword ptr fs:
0040A6B1   .50            push eax
0040A6B2   .64:8925 00000>mov dword ptr fs:,esp
0040A6B9   .83EC 50       sub esp,0x500040A6A0   > \55            push ebp------------------retn掉。运行,OK窗口出现。如下图


这里要运用VB断点脚本 插件--ODbgscript ---选取Delphi & VB事件断点查找脚本.osc

运行-来到004096A6   . /E9 F50F0000   jmp CrackMe.0040A6A0                     ;断在这里
004096AB   . |816C24 04 4B0>sub dword ptr ss:,0x4B
004096B3   . |E9 D8130000   jmp CrackMe.0040AA90
004096B8   . |816C24 04 530>sub dword ptr ss:,0x53
004096C0   . |E9 FB140000   jmp CrackMe.0040ABC0
004096C5   . |816C24 04 5F0>sub dword ptr ss:,0x5F
004096CD   . |E9 1E160000   jmp CrackMe.0040ACF0
004096D2   . |816C24 04 5F0>sub dword ptr ss:,0x5F
004096DA   . |E9 11170000   jmp CrackMe.0040ADF0
004096DF   . |816C24 04 630>sub dword ptr ss:,0x63
004096E7   . |E9 44180000   jmp CrackMe.0040AF30
004096EC   . |816C24 04 4F0>sub dword ptr ss:,0x4F
004096F4   . |E9 37190000   jmp CrackMe.0040B030
004096F9   . |816C24 04 FFF>sub dword ptr ss:,0xFFFF
00409701   . |E9 9A190000   jmp CrackMe.0040B0A0
00409706   . |816C24 04 5F0>sub dword ptr ss:,0x5F
0040970E   . |E9 ED190000   jmp CrackMe.0040B100
00409713   . |816C24 04 FFF>sub dword ptr ss:,0xFFFF
0040971B   . |E9 C01A0000   jmp CrackMe.0040B1E0
00409720   . |816C24 04 FFF>sub dword ptr ss:,0xFFFF
00409728   . |E9 831C0000   jmp CrackMe.0040B3B0我们要的是按钮事件,现在断点一个一个取消,直到找到按钮事件。00409699   . /E9 B2050000   jmp CrackMe.00409C50                     ;按钮事件
0040969E   . |816C24 04 3F0>sub dword ptr ss:,0x3F
004096A6   . |E9 F50F0000   jmp CrackMe.0040A6A0                     ;断在这里
004096AB   . |816C24 04 4B0>sub dword ptr ss:,0x4B
004096B3   . |E9 D8130000   jmp CrackMe.0040AA90
004096B8   . |816C24 04 530>sub dword ptr ss:,0x53
004096C0   . |E9 FB140000   jmp CrackMe.0040ABC0找到了,F8单步
到了00409C50   > \55            push ebp
00409C51   .8BEC          mov ebp,esp
00409C53   .83EC 18       sub esp,0x18
00409C56   .68 86124000   push <jmp.&MSVBVM60.__vbaExceptHandler>;SE 处理程序安装
00409C5B   .64:A1 0000000>mov eax,dword ptr fs:
00409C61   .50            push eax
00409C62   .64:8925 00000>mov dword ptr fs:,esp
00409C69   .B8 40010000   mov eax,0x140
00409C6E   .E8 0D76FFFF   call <jmp.&MSVBVM60.__vbaChkstk>
00409C73   .53            push ebx
00409C74   .56            push esi
00409C75   .57            push ediF8单步往下跟.
这里出现我们刚才输的假用户名00409D38   > \C785 C0FEFFFF>mov dword ptr ss:,0x0
00409D42   >8B85 74FFFFFF mov eax,dword ptr ss:
00409D48   .8985 C4FEFFFF mov dword ptr ss:,eax         ;假用户名
00409D4E   .C785 74FFFFFF>mov dword ptr ss:,0x0
00409D58   .8B8D C4FEFFFF mov ecx,dword ptr ss:
00409D5E   .898D 4CFFFFFF mov dword ptr ss:,ecx
00409D64   .C785 44FFFFFF>mov dword ptr ss:,0x8
00409D6E   .8D95 44FFFFFF lea edx,dword ptr ss:
00409D74   .8D4D CC       lea ecx,dword ptr ss:继续F800409E0A   /0F8F 02010000 jg CrackMe.00409F12                      ;可疑跳转
00409E10   . |C745 FC 06000>mov dword ptr ss:,0x6
00409E17   . |C785 4CFFFFFF>mov dword ptr ss:,0x1
00409E21   . |C785 44FFFFFF>mov dword ptr ss:,0x2
00409E2B   . |8D85 44FFFFFF lea eax,dword ptr ss:可疑的跳转,状态=未实现。00409E0A   /0F8F 02010000 jg CrackMe.00409F12 让他往下跳试下,改标志位 S 1改为 S 0---跳转实现

单步跟00409F3B   .52            push edx                                 ; ||var28
00409F3C   .8D85 44FFFFFF lea eax,dword ptr ss:          ; ||
00409F42   .50            push eax                                 ; ||SaveTo8 = 0012F44C
00409F43      FF15 A0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMu>; |\__vbaVarMul
00409F49   .50            push eax                                 ; |var28
00409F4A   .8D8D 34FFFFFF lea ecx,dword ptr ss:          ; |
00409F50   .51            push ecx                                 ; |SaveTo8到这里程序退出00409F43      FF15 A0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMu>; |\__vbaVarMul重新载入
这次不让他跳试试00409E0A   /0F8F 02010000 jg CrackMe.00409F12到了这里00409EEA   .8D4D BC       lea ecx,dword ptr ss:
00409EED   .51            push ecx
00409EEE   .8D95 44FFFFFF lea edx,dword ptr ss:
00409EF4   .52            push edx
00409EF5   .FF15 C0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarCa>;msvbvm60.__vbaVarCat
00409EFB   .8BD0          mov edx,eax
00409EFD   .8D4D AC       lea ecx,dword ptr ss:
00409F00   .FF15 0C104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMo>;msvbvm60.__vbaVarMove
00409F06   >C745 FC 0A000>mov dword ptr ss:,0xA
00409F0D   .^ E9 D8FEFFFF   jmp CrackMe.00409DEA
00409F12   >C745 FC 0B000>mov dword ptr ss:,0xB
00409F19   .C785 1CFFFFFF>mov dword ptr ss:,0xC
00409F23   .C785 14FFFFFF>mov dword ptr ss:,0x2
00409F2D   .8D45 AC       lea eax,dword ptr ss:
00409F30   .50            push eax                                 ; /var18往上跳回去了, - -!00409F0D   .^ E9 D8FEFFFF   jmp CrackMe.00409DEA貌似计算什么东西。

不管他F8继续---先跑一遍,让他往上跳,第二遍,还是把S 1改成 S 0   算法就不分析了。
跳转实现,F8走,还是到了00409F3B   .52            push edx                                 ; ||var28
00409F3C   .8D85 44FFFFFF lea eax,dword ptr ss:          ; ||
00409F42   .50            push eax                                 ; ||SaveTo8
00409F43      FF15 A0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMu>; |\__vbaVarMul
00409F49   .50            push eax                                 ; |var28
00409F4A   .8D8D 34FFFFFF lea ecx,dword ptr ss:          ; |这次没退出了。
00409F43      FF15 A0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarMu>; |\__vbaVarMul

F8继续走,VB代码长,不急慢慢跟
到了0040A171   . /EB 0A         jmp XCrackMe.0040A17D
0040A173   > |C785 B8FEFFFF>mov dword ptr ss:,0x0
0040A17D   > \8B8D 74FFFFFF mov ecx,dword ptr ss:
0040A183   .51            push ecx                                 ;假码
0040A184   .8B95 78FFFFFF mov edx,dword ptr ss:
0040A18A   .52            push edx出现我们刚才输的假码

F8继续,来到0040A1ED   .83C4 0C       add esp,0xC
0040A1F0   .0FBF95 F0FEFF>movsx edx,word ptr ss:
0040A1F7   .85D2          test edx,edx
0040A1F9      0F84 1C030000 je CrackMe.0040A51B                      ;关键跳
0040A1FF   .C745 FC 10000>mov dword ptr ss:,0x10
0040A206   .8B45 08       mov eax,dword ptr ss:
0040A209   .8B08          mov ecx,dword ptr ds:
0040A20B   .8B55 08       mov edx,dword ptr ss:
0040A20E   .52            push edx0040A1F9      0F84 1C030000 je CrackMe.0040A51B-----状态=实现跳转很大的跳转,应该是关键了,测试下
既然是实现状态,我们让他别跳。0040A1F9      0F84 1C030000 je CrackMe.0040A51B Nop掉,运行

哈哈,“您给的确认码是正确的” OK了。


完毕。


yes,天又亮了,各位早安,    睡觉去了。      




--------------------------------------------------------------------------------
【版权声明】: 本文原创于Chief, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2012年05月01日 6:15:12


小咪咪 发表于 2012-5-1 08:04

Cheif牛越来越犀利了您让小菜情何以堪{:1_923:}


tk86935367 发表于 2012-5-1 09:10

犀利,奋斗到天明啊。

微0渺 发表于 2012-5-5 02:04

这样破解是不正确的吧、怎么保存后不能运行啊、是不是有什么验证?

微0渺 发表于 2012-5-12 19:35

尽管照你的话,没有保存运行成功!你的一句“别开玩笑了。”我知道一定是我错了、膜拜、大牛牛啊!再膜拜!

奕彤依格 发表于 2014-3-23 22:45

MEI YOU KA ZEN ME BU XING
页: [1]
查看完整版本: 吾爱破解2012CM大赛破文-淡然出尘