KaQqi 发表于 2016-10-4 11:40

160cm之003 爆破追码 by cqr2287

今天闲的无聊,继续写cm。1来锻炼技术,2来试试冰若大神的ollydbg.

软件只有一个验证,跟002是看雪老师论坛里一个人做的,风格差不多,验证方法与计算方法倒是差远了。

打开软件,非让我看它启动窗口的动画。。等了5秒,终于开了


随便输入注册码。



然后就退出了。


static/image/hrline/2.gif

点了确定就退出了,那就说明这个软件有调用。这样的话f12暂停法就不能用了,看看字符串吧

载入od。



啊哈,玩了3个cm,终于遇到有壳的了。。{:301_992:}

管他呢,带壳破解。。



vb程序,但是为什么有ff25…………管他呢,下816c24断点。



小程序就3个。f9运行,输入假码注册。

00407931    816C24 04 53000>SUB DWORD PTR SS:, 0x53


在此处断下了。把其他俩断点删掉。

跟踪它。f8两次后,到了关键位置。仔细跟踪。

004081E3    FF15 18B14000   CALL DWORD PTR DS:[<&MSVBVM50.__vbaHresu>; Msvbvm50.__vbaHresultCheckObj
004081E9    8B95 50FFFFFF   MOV EDX, DWORD PTR SS:
004081EF    8B45 E4         MOV EAX, DWORD PTR SS:
004081F2    50            PUSH EAX                                 ; 将用户名搞到寄存器


这三部是提取用户名的。继续跟踪。

004085C8    FF15 18B14000   CALL DWORD PTR DS:[<&MSVBVM50.__vbaHresu>; Msvbvm50.__vbaHresultCheckObj
004085CE    8B45 E8         MOV EAX, DWORD PTR SS:
004085D1    50            PUSH EAX                                 ; 假码出现


这三步是提取假码的。



我擦,输了。。继续跟踪看看。

004086D9   . /EB 60         JMP SHORT 0040873B
004086DB   > |8B35 14B14000 MOV ESI, DWORD PTR DS:[<&MSVBVM50.__vbaS>;Msvbvm50.__vbaStrCat
004086E1   . |68 08704000   PUSH 00407008                            ;UNICODE "You Get Wrong"
004086E6   . |68 DC6F4000   PUSH 00406FDC                            ; /String = "
"
004086EB   . |FFD6          CALL ESI                                 ; \__vbaStrCat
004086ED   . |8BD0          MOV EDX, EAX
004086EF   . |8D4D E8       LEA ECX, DWORD PTR SS:
004086F2   . |FF15 94B14000 CALL DWORD PTR DS:[<&MSVBVM50.__vbaStrMo>;Msvbvm50.__vbaStrMove
004086F8   . |50            PUSH EAX
004086F9   . |68 28704000   PUSH 00407028                            ;UNICODE "Try Again"
004086FE   . |FFD6          CALL ESI                                 ;Msvbvm50.__vbaStrCat
00408700   . |8945 CC       MOV DWORD PTR SS:, EAX

我们看到,有一个跳转是跳到了失败这里的。跟踪它。

00408674   .8945 B4       MOV DWORD PTR SS:, EAX
00408677   .74 62         JE SHORT 004086DB
00408679   .8B35 14B14000 MOV ESI, DWORD PTR DS:[<&MSVBVM50.__vbaS>;Msvbvm50.__vbaStrCat
0040867F   .68 C06F4000   PUSH 00406FC0                            ;UNICODE "You Get It"
00408684   .68 DC6F4000   PUSH 00406FDC                            ; /String = "
"
00408689   .FFD6          CALL ESI                                 ; \__vbaStrCat
0040868B   .8BD0          MOV EDX, EAX
0040868D   .8D4D E8       LEA ECX, DWORD PTR SS:
00408690   .FF15 94B14000 CALL DWORD PTR DS:[<&MSVBVM50.__vbaStrMo>;Msvbvm50.__vbaStrMove


是个je,把je给nop掉,完成爆破。


static/image/hrline/line7.png


追码开始。

刚才说到了爆破,在je处nop。那么正确注册码应该在上面。我为什么没有看到???

向上回溯看看。

其实,在刚才的跟踪中,我看到几个字符很可疑,它们三个组成起来很可能就是注册码。我只是没看到我的假码在寄存器与它们同出现而已。很可能它是分开比对的。

我们在假码出现的地方再次下段,删掉按钮事件断点,重新动态调试。

第一个可疑字符串 002BC2FC31 00 38 00 36 00 36 00 39 00 36 00 34 00      1.8.6.6.9.6.4.

其他两个在假码上面出现的。先不跟踪,试试这个。

1866964.



ok。


static/image/hrline/2.gif


这一次我测试了冰若的od{:301_971:}

说错了,这一次我搞了cm3.

我们发现,很可能软件是将注册码分段比对的。上面两个字符也许是这个真马的运算过程。

以后在假码附近出现的可疑字符串都小心点。


绯红花雨 发表于 2016-10-4 11:43

不错,支持楼主!{:301_993:}

pk33688 发表于 2016-10-4 13:44

求大声帮我破解一个辅助http://pan.baidu.com/s/1i4ZgX0p

Ps出来的小赵 发表于 2016-10-4 14:57

楼主能不能把160CM打包发我一个,我一直都没找到- -。。。

caroot1996 发表于 2016-10-6 20:11

看得我目瞪口呆

ggg小生 发表于 2016-10-6 22:14

确实是大神

xiaohong 发表于 2016-10-8 16:21

确实是大神,向你学习
页: [1]
查看完整版本: 160cm之003 爆破追码 by cqr2287