刚学习断点,试着破解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 在猥琐中不断的成长:lol 本帖最后由 西氏 于 2009-9-12 22:47 编辑
在猥琐中不断的成长:lol
CHHSun 发表于 2009-9-12 22:43 http://www.52pojie.cn/images/common/back.gif
他的cm太猥琐了。已经做了一天了。知道自己水平还很远,慢慢努力。希望有天能赶上小牛们就行了 小伙子不错....
:'(weeqw
可怜我都不会爆吖.... 太强大了 成功爆P菊花 dddddddddddddddddddddddddddddddddddd
jielimiiii 发表于 2009-9-14 20:23 http://www.52pojie.cn/images/common/back.gif
留個證据...
請寫點有內容的東西, 好嗎? 看不懂也要看。
页:
[1]