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


找關鍵CALL和關鍵跳

方法一:

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

OD載入程序-->

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

或:右鍵-->超級字符串參考-->查找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:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM