利用信息提示框API斷點MessageBoxA
實現破解
之前使用字符串查找的方式來破解程序,但是有的程序字符串經過了加密,我們就無法搜索到關鍵字。
下面介紹利用信息提示框API斷點MessageBoxA
實現破解:
-
可以下這樣一個斷點:
MessageBoxA
(也可以在command
窗口中直接輸入bp MessageBoxA
) -
運行程序,讓軟件在彈出錯誤提示框前斷下來
-
F8
單步執行,來到這個錯誤提示框call
前,往上找找看有沒有能夠跳過這個錯誤提示框的 -
一般直接在上面是找不到關鍵跳的(因爲位於系統領空)。
F8
繼續單步下去,嘗試退出目前的call
,看上層是否有關鍵跳 -
執行到代碼行下方的
retn
,跳出這個call
,繼續往上找是否有能夠跳過這個call
的…(判斷有沒有,是看這個
call
和上面最近的一個retn
之間是否有跳轉能夠跳過這個call
) -
如果還是沒有,那麼繼續跳出這個
call
,直到發現有關鍵跳了!在這個大call上寫上註釋~~~ -
往上看,本來有一個跳轉A是可以跳過這個
call
的,但是由於它上面的跳轉B跳過了跳轉A,所以讓A無法實現 -
選中上面這個跳轉B的目標代碼行,然後註釋欄會出現 “跳轉來自 xxx” ,選中它右鍵轉到跳轉B的來源處
-
就是這個跳轉B在搞鬼,在這裏
F2
下斷點,並把之前的消息框斷點刪掉,然後運行程序證明一下PS:
-
沒必要重新載入這個程序,只要點擊
F9
運行,然後再輸一次註冊碼就可以到斷點位置了。 -
當上下滾動分析代碼時,雙擊右側寄存器窗口中的
EIP
,可以回到當前執行的代碼行了!因爲EIP指向當前執行位置。
-
-
把這個跳轉
nop
掉即可