1.OD-破解MTS DashBoard
直接上過(guò)程吧,F9運(yùn)行,直接SIMLOCK框出來(lái),spy++看EDIT消息,輸入后點(diǎn)擊OK抓到消息為GET_TEXTLENGTH和GET_TEXT,PEID看了下,UNICODE,所以猜GetWindowTextW,之類(lèi)
spy++看EIDT的ID:
FA2
OD看所有存在window:
記下句柄0011154c
CTRL+G輸入GetWindowTextW,跳轉(zhuǎn)到User32.dll空間:(我選中的為這個(gè)函數(shù)入口):
?
直接斷點(diǎn),發(fā)現(xiàn)不停的進(jìn)來(lái),我靠,加個(gè)條件斷點(diǎn):
先輸入11111112讓OK按鈕亮起來(lái):
在77D2A5CD上
shift+F4打開(kāi)條件斷點(diǎn),輸入:[ESP+4]==0011154c,如下圖:
為什么是ESP+4,因?yàn)?#xff1a;
[cpp]?view plaincopyhWnd是第一個(gè)參數(shù),也就是最后入棧,再調(diào)用call getwindowtextw,EIP入棧,所以ESP+4指向hWnd,上面的意思就是,當(dāng)hWnd為0011154c時(shí)的窗口觸發(fā)了getwindowtextw,
點(diǎn)擊simlock的OK按鈕,很幸運(yùn),進(jìn)來(lái)了:
圖的右下角堆棧顯示:call to getwindowtext, count = 9,hwnd = 0011154c, class = edit,,沒(méi)錯(cuò)了,
Alt+F9從系統(tǒng)的 USE32空間跳到我們的code空間:顯示如下:
繼續(xù)F8單步調(diào)試到004B0490,F7跳入函數(shù)繼續(xù)跟進(jìn),發(fā)現(xiàn)我們輸入的字符:EAX寄存器點(diǎn)擊右鍵,選擇follow in dump,直接跟進(jìn)內(nèi)存區(qū):
EAX存了我們輸入的字符串地址0807cb88,繼續(xù)F8跟進(jìn):
當(dāng)前選中這一句,我們看下面注釋為ds:[0807cb7c]=00000008,很明顯,這是判斷我們輸入的字符是否為空,顯示這不是我們想要的,繼續(xù)F8跟進(jìn):
這里我特別對(duì)ECX進(jìn)行了內(nèi)存跟蹤,發(fā)現(xiàn),在運(yùn)行到CALL 0040A590這個(gè)命令時(shí),ECX存的數(shù)據(jù)為0012E4CC,而內(nèi)存0012E4CC包括了88 CB 07 08,也就是我們輸入的字符串地址(前面我們記錄了),說(shuō)明這是個(gè)關(guān)鍵比較函數(shù),事實(shí)上,后面只需要把后面0040DC73的這個(gè)test eax,eax強(qiáng)制改了,就注冊(cè)成功了,我們還是跟進(jìn)去看吧:
F7進(jìn)入比較算法函數(shù):
運(yùn)行到這一步,其實(shí)什么都出來(lái)了,我們看到EAX保存了我們輸入的字符串11111111,而ECX也保存了一個(gè)字符串,后面這一段我特別加上注釋再截個(gè)圖出來(lái):
都看出來(lái)了,直接的解鎖碼為45061617,:最后代碼是:
最后通過(guò)SETE CL
???????????? MOV AL, CL,把ZF是否為1傳出.
最后,就是上面說(shuō)的代碼TEST AL, AL
總結(jié)
以上是生活随笔為你收集整理的1.OD-破解MTS DashBoard的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 0.OD-基础操作
- 下一篇: 2.OD-C++的虚函数表遍历