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