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