小甲鱼 OllyDbg 教程系列 (十) : Windows 逆向常用 api 以及 XOFTSPY 逆向
?
小甲魚(yú) OllyDbg 視頻教程
? ? ? 嘗試 1 :?https://www.bilibili.com/video/av6889190?p=17
? ? ? 嘗試 2 :?https://www.bilibili.com/video/av6889190?p=18
小甲魚(yú)OD學(xué)習(xí)第13-14講:https://www.bbsmax.com/A/QV5ZL1gZzy/
逆向常用 api?:https://pan.baidu.com/s/1dypI6la3Gj4i-G6exiCMkg ? ?提取碼:v6dq?
?
嘗試 1:使用 查找模塊間的調(diào)用 進(jìn)行逆向
?
方法 1:
API 函數(shù) GetWindowTextA 可以取得一個(gè)窗體的標(biāo)題(caption)文字,或者一個(gè)控件的內(nèi)容
可以通過(guò) api 函數(shù) GetWindowTextA 來(lái)進(jìn)行逆向
搜索 API 函數(shù) GetWindowTextA 函數(shù)
?按 Alt + b ,查看所有斷點(diǎn),可以看到 下了 3 個(gè)斷點(diǎn)
?
把 這個(gè) 3 個(gè)斷點(diǎn)刪除,使用另外一種方法查找。
?
方法 2:
按下? Ctrl + n ,查找 getwindowa ,然后 右鍵 -> 在每個(gè)參考上設(shè)置斷點(diǎn)。按下 Alt + b ,可以看到還是設(shè)置三個(gè)斷點(diǎn)。
查看斷點(diǎn) Alt + b:
然后重新載入程序、運(yùn)行,看程序有沒(méi)有在斷點(diǎn)處停下來(lái)。發(fā)現(xiàn)程序在斷點(diǎn)處停下來(lái),因?yàn)闆](méi)有輸入內(nèi)容,所以這個(gè)斷點(diǎn)是沒(méi)有用的,刪除這個(gè)斷點(diǎn),按 F9 繼續(xù)。發(fā)現(xiàn)程序又在一個(gè)斷點(diǎn)處停下來(lái),同樣沒(méi)有輸入內(nèi)容,所以這個(gè)斷點(diǎn)也是沒(méi)有用的,刪除這個(gè)斷點(diǎn),按 F9 繼續(xù)。發(fā)現(xiàn)程序運(yùn)行,出現(xiàn)界面。點(diǎn)擊注冊(cè):
發(fā)現(xiàn)程序果斷的在最后一個(gè)斷點(diǎn)處停下,
然后開(kāi)始 F7、F8 調(diào)試,尋找關(guān)鍵跳轉(zhuǎn):
可見(jiàn)是判斷al值,那么上一個(gè)call可能就是計(jì)算加密的函數(shù),下斷點(diǎn)進(jìn)入
神奇的發(fā)現(xiàn)有兩處call地址相同,附近代碼也相同,猜測(cè)這是程序怕被破解所以出現(xiàn)的二次驗(yàn)證程序
進(jìn)入后找到兩處retn
由經(jīng)驗(yàn)得出第一個(gè)retn為true,第二個(gè)為false
將跳轉(zhuǎn)實(shí)現(xiàn)的標(biāo)志位修改成未實(shí)現(xiàn)(修改標(biāo)志位Z)
修改后確實(shí)彈出了注冊(cè)成功了的對(duì)話框,但是發(fā)現(xiàn)界面依然顯示未注冊(cè)的信息。
這時(shí)候我們就要考慮他的雙重驗(yàn)證了,第二個(gè)驗(yàn)證call
也可以通過(guò)字符串查詢方式,尋找關(guān)鍵位置
下斷點(diǎn)進(jìn)入,找到關(guān)鍵跳轉(zhuǎn)關(guān)鍵call
進(jìn)入函數(shù)?
找到關(guān)鍵跳轉(zhuǎn),mov bl,1 ??
后面直接 mov al,bl
我們修改代碼 mov al,1
成功
總結(jié):還是要鍛煉尋找加密思路,尋找關(guān)鍵的上一個(gè)跳轉(zhuǎn)及call是最關(guān)鍵的
?
?
嘗試?2:查找關(guān)鍵字進(jìn)行爆破
?
這次我們的任務(wù)是 PJ 這個(gè)需要注冊(cè)碼的軟件,如下圖所示
我們搜索上圖相應(yīng)的提示字符串,看看能找到什么線索,我們搜索? invalid? code? 試試看,如下圖
然后下斷點(diǎn),如下圖所示
我們來(lái)到斷點(diǎn)處的代碼,如下圖
觀察代碼,發(fā)現(xiàn)0041749C? JNZ SHORT XoftSpy.004174E3? 能跳轉(zhuǎn)到相應(yīng)的成功注冊(cè)的提示信息,如下圖
我們干脆把代碼改為 jmp? SHORT XoftSpy.004174E3,看看效果,如下圖
用所有修改保存,運(yùn)行程序并且注冊(cè),發(fā)現(xiàn)提示成功,如下圖
但是我們又發(fā)現(xiàn),軟件還是沒(méi)有注冊(cè)成功,如下圖所示
我們干脆換個(gè)方式,搜索另外一個(gè)標(biāo)志字符串,下斷點(diǎn),如下圖所示
觀察 00401499 JE SHORT XoftSpy.004014AD,這行代碼能跳轉(zhuǎn)到軟件注冊(cè)成功的代碼處,如下圖
我們嘗試著用NOP來(lái)代替這行代碼看看效果,如下圖
用所有修改保存,運(yùn)行軟件,發(fā)現(xiàn)已經(jīng)破解成功!!
?
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的小甲鱼 OllyDbg 教程系列 (十) : Windows 逆向常用 api 以及 XOFTSPY 逆向的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: puppeteer( Nodejs 版
- 下一篇: python 结巴分词(jieba)学习