標籤:http c 一個 .net 和 5
找關鍵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: