破解之關鍵CALL與關鍵跳查找方法

找關鍵CALL和關鍵跳字符串

方法一:程序

輸入假碼註冊程序,記錄下錯誤提示信息。方法

OD載入程序-->im

右鍵-->查找-->全部參考文本字串-->(右鍵-->查找文本,注:不要區分大小寫,選擇整個範圍)找到上面記錄的錯誤提示文本img

或:右鍵-->超級字符串參考-->查找ASCII碼/UNICODE->(右鍵-->查找文本,注:不要區分大小寫,選擇整個範圍)找到上面記錄的錯誤提示文本字符

-->雙擊進去,關鍵CALL和關鍵跳就在其上面附近。通常在其上有提示註冊成功的文本信息,在成功和失敗提示文本的上面有一個比較,比較下面有一個跳轉。在比較的上面的第一個CALL就是關鍵CALL了。錯誤

 

方法二:註冊

OD載入程序-->F9運行程序-->輸入假碼註冊程序,確認,彈出錯誤提示框-->F12暫停程序運行--->ALT+K查看調用堆棧-->找到來自主程序的調用-->雙擊進去-->,關鍵CALL和關鍵跳就在其上面附近。通常在其上有提示註冊成功的文本信息,在成功和失敗提示文本的上面有一個比較,比較下面有一個跳轉。在比較的上面的第一個CALL就是關鍵CALL了。

 

 

簡單爆破方法:

方法一:修改關鍵CALL(經過修改寄存器的值達到控制關鍵跳實現與否)

找到關鍵CALL以後先在關鍵CALL上下個斷點(其上附近亦可)-->重載程序-->F9運行程序-->輸入假碼,確認-->回到OD,則停留在咱們上面下段的地方-->單步跟蹤到關鍵CALL上F7步入-->在段首(跟進去所在的位置)寫入mov eax,1(注:其中之因此要修改eax的值是因爲影響關鍵跳的比較的寄存器爲eax,一般都是eax。之因此修該爲1,是爲了轉換關鍵跳的實現與否,如:默認eax爲0,關鍵跳沒實現,那麼我沒就把eax改成非零值便可),在下一行寫retn X(X爲該段尾返回的值,若是他沒有返回咱們也不返回任何值)-->保存修改-->OK

方法二:修改關鍵跳(直接不理會判斷條件,強制改變其跳轉狀態)

該關鍵跳爲相反狀態(如:je-->jz, jnz-->jmp    等等)

 

爲何要修改EAX的值:

 修改關鍵CALL:

相關文章
相關標籤/搜索