西氏 发表于 2009-9-12 22:27

刚学习断点,试着破解peace2008的cm20090819

本帖最后由 西氏 于 2009-9-12 22:28 编辑

【文章标题】: 刚学习断点,试着破解peace2008的cm20090819
【文章作者】: 西氏
【软件名称】: CM20090819【柿子不软系列之大叔的草莓】
【下载地址】: http://www.52pojie.cn/thread-30934-1-1.html
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
开始走按钮路线,以为时比较字符串的。
bp __vbaStrCmp下断
F9运行,复制用户名xishi粘贴注册码xishi,被断下来了,继续f9.两次之后,可以注册了,点击注册又被断下来了
这时alt+f9,返回,
00402BF6   .8B1D 58114000 mov ebx,dword ptr ds:[<&MSVBVM60.__vbaFr>;msvbvm60.__vbaFreeStr//返回到这里,下断
00402BFC   .8BF8          mov edi,eax
00402BFE   .F7DF          neg edi
00402C00   .1BFF          sbb edi,edi
00402C02   .8D4D E8       lea ecx,dword ptr ss:
00402C05   .47            inc edi
00402C06   .F7DF          neg edi
00402C08   .FFD3          call ebx                                 ;<&MSVBVM60.__vbaFreeStr>
然后不停的跟,发现怎么都跟不到关键。
后来下了看了看发现时之后自然的变成了注册了,说明那个点击注册的是骗人的,真猥琐,害得我搞了2个小时。
那想了想应该又字符串传递,因为原来是“点击注册”后来换成 注册成功之类的。
所以下了字符串传递。__vbaStrVarMove 和__vbaStrMove这两个断点。点黏贴注册码的时候断下了。继续f9直到最后一次出现断下来的函数为止
我的电脑上断了六次。所以选第五次。(因为这样才离“点击注册”换成 ”注册成功“最近,前面可能是些其它变量的传递,要先测试才能知道)
ALT+F9返回
00403D7B   .50            push eax//返回到这里了。
00403D7C   .8B4D DC       mov ecx,dword ptr ss:
00403D7F   .51            push ecx
00403D80   .FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>;msvbvm60.__vbaStrCmp
00403D86   .F7D8          neg eax
00403D88   .1BC0          sbb eax,eax
00403D8A   .40            inc eax
00403D8B   .F7D8          neg eax
00403D8D   .66:8985 3CFFF>mov word ptr ss:,ax




下面是很多相似的也不知道是什么(等高手来解答)
00403A5D   .8B95 34FFFFFF mov edx,dword ptr ss:
00403A63   .52            push edx
00403A64   .FF91 A0000000 call dword ptr ds:
00403A6A   .DBE2          fclex
00403A6C   .8985 30FFFFFF mov dword ptr ss:,eax
00403A72   .83BD 30FFFFFF>cmp dword ptr ss:,0
00403A79   .7D 26         jge short CM090819.00403AA1
00403A7B   .68 A0000000   push 0A0
00403A80   .68 24254000   push CM090819.00402524

走到这个时候
00403D9D   .0FBF95 3CFFFF>movsx edx,word ptr ss:
00403DA4   .85D2          test edx,edx
00403DA6      0F84 05070000 je CM090819.004044B1//关键跳
00403DAC   .C745 FC 0F000>mov dword ptr ss:,0F
00403DB3   .8B45 08       mov eax,dword ptr ss:
00403DB6   .8B08          mov ecx,dword ptr ds:
00403DB8   .8B55 08       mov edx,dword ptr ss:
00403DBB   .52            push edx
00403DBC   .FF91 00030000 call dword ptr ds:
00403DC2   .50            push eax
00403DC3   .8D45 C4       lea eax,dword ptr ss:
00403DC6   .50            push eax

上面的关键跳到这(不要跟)
004044AE   .83C4 14       add esp,14
004044B1   >EB 10         jmp short CM090819.004044C3
004044B3   >C745 FC 14000>mov dword ptr ss:,14
004044BA   .8B45 08       mov eax,dword ptr ss:
004044BD   .66:C740 34 FF>mov word ptr ds:,0FFFF
004044C3   >C745 F0 00000>mov dword ptr ss:,0
004044CA   .9B            wait

如果不nop掉那个关键跳的话,就在系统的领空再也回来不来了。

一直F8,又走到一个比较重要的地方,
00403F39   .8D45 90       lea eax,dword ptr ss:
00403F3C   .50            push eax                                 ; /Length8
00403F3D   .0FBF4D D4   movsx ecx,word ptr ss:         ; |
00403F41   .51            push ecx                                 ; |Start
00403F42   .8D55 A0       lea edx,dword ptr ss:            ; |
00403F45   .52            push edx                                 ; |dString8
00403F46   .8D45 80       lea eax,dword ptr ss:            ; |
00403F49   .50            push eax                                 ; |RetBUFFER
00403F4A   .FF15 74104000 call dword ptr ds:[<&MSVBVM60.#632>]   ; \rtcMidCharVar//f7进去看看
00403F50   .8D4D 80       lea ecx,dword ptr ss:
00403F53   .51            push ecx
00403F54   .FF15 68104000 call dword ptr ds:[<&MSVBVM60.__vbaBoolV>;msvbvm60.__vbaBoolVar
00403F5A   .50            push eax



连进两个同样的call程序就跑飞了。
重新加载。

这里面又三段

00404170   .8D55 90       lea edx,dword ptr ss:
00404173   .52            push edx                                 ; /Length8
00404174   .0FBF45 D4   movsx eax,word ptr ss:         ; |
00404178   .50            push eax                                 ; |Start
00404179   .8D4D A0       lea ecx,dword ptr ss:            ; |
0040417C   .51            push ecx                                 ; |dString8
0040417D   .8D55 80       lea edx,dword ptr ss:            ; |
00404180   .52            push edx                                 ; |RetBUFFER
00404181   .FF15 74104000 call dword ptr ds:[<&MSVBVM60.#632>]   ; \rtcMidCharVar
00404187   .C785 48FFFFFF>mov dword ptr ss:,1
00404191   .C785 40FFFFFF>mov dword ptr ss:,2
每段的值都是一样的
0012E7CC   00401188CM090819.00401188
0012E7D0   0012E914|RetBUFFER = 0012E914
0012E7D4   0012E934|dString8 = 0012E934
0012E7D8   00000000|Start = 0
0012E7DC   0012E924\Length8 = 12E924
0012E7E0   0012E914

不知道是什么,我猜应该是中文那几个注册的字符串,还请pace2008,小生我怕怕等大鸟们出来教教小菜。不明白。
最后怎么想也不明白直接nop掉。发现竟然可以了。不过也有些问题。有时注册带空格的文件名不成功。我怀疑用户名定义的时候
是不是有个字符串限制,因为跟踪是用户名有个跟26个字母大小写比较的东东。
还有程序会溢出,用这个用户名
5394769192718247571624959933172575515731369899253164365389519226243
31135857284227248638789897216593
注册不成功,还期待高手进一步解答。

跟踪的中间还发现段这个,不知道是什么。感觉字符串比较重要的东西。
00403966   .52            push edx
00403967   .FF15 28114000 call dword ptr ds:[<&MSVBVM60.#617>]   ;msvbvm60.rtcLeftCharVar
0040396D   .8D45 90       lea eax,dword ptr ss:
00403970   .50            push eax                                 ; /String8 = 0012E924
00403971   .8D4D CC       lea ecx,dword ptr ss:            ; |
00403974   .51            push ecx                                 ; |ARG2
00403975   .FF15 DC104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVa>; \__vbaStrVarVal
0040397B   .50            push eax
0040397C   .FF15 5C114000 call dword ptr ds:[<&MSVBVM60.#581>]   ;msvbvm60.rtcR8ValFromBstr
00403982   .DC0D 08124000 fmul qword ptr ds:

--------------------------------------------------------------------------------
【经验总结】
不停的跟踪,不停的对比,我中间下过小生破解的文件。一打开猜恍然大悟,原来粘贴注册码的时候已经在注册了,要是一
直盯着注册那个按钮,估计累死都不知道,里面全是条件语句 case 0...3一直想跳过去也没成功。主要成果还是小生,参
考了他的爆破版。我只是把我学破解的经过写下来。

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

                                                       2009年09月12日 22:21:48

CHHSun 发表于 2009-9-12 22:43

在猥琐中不断的成长:lol

西氏 发表于 2009-9-12 22:46

本帖最后由 西氏 于 2009-9-12 22:47 编辑

在猥琐中不断的成长:lol
CHHSun 发表于 2009-9-12 22:43 http://www.52pojie.cn/images/common/back.gif
他的cm太猥琐了。已经做了一天了。知道自己水平还很远,慢慢努力。希望有天能赶上小牛们就行了

什么也不是 发表于 2009-9-12 23:03

小伙子不错....
:'(weeqw
可怜我都不会爆吖....

Tale 发表于 2009-9-12 23:27

太强大了 成功爆P菊花

ZeNiX 发表于 2009-9-15 09:41

dddddddddddddddddddddddddddddddddddd
jielimiiii 发表于 2009-9-14 20:23 http://www.52pojie.cn/images/common/back.gif

留個證据...
請寫點有內容的東西, 好嗎?

破烂王 发表于 2009-11-2 16:42

看不懂也要看。
页: [1]
查看完整版本: 刚学习断点,试着破解peace2008的cm20090819