Ponce:一鍵即可實現符號執行(IDA外掛)
Ponce是一款IDA Pro外掛,該工具採用C/C++開發,它可以幫助使用者以一種快速簡潔的方式對目的碼進行汙點測試以及符號執行。使用者只需點一下滑鼠或者按一下鍵盤,剩下的就可以交給Ponce了。
在安全社群,符號執行已經不是什麼新概念了。自從 Triton 和 Angr 等開源專案誕生之後,符號執行更是“風靡”整個安全圈。為了幫助研究人員解決特殊的使用場景,我們專門開發了這款IDA外掛,推薦反編譯/逆向工程師使用。
工具安裝
Ponce支援IDA 6.8和IDA 6.9x版本的32位以及64位程式碼,大家只需要將相應的檔案( 最新版 )拷貝到IDA安裝目錄下的plugins\資料夾即可。
IDA 7.0
Ponce預設還支援Windows平臺下的IDA 7.0(32位/64位),使用者只需將latest_builds中的Ponce64.dll拷貝到IDA安裝目錄中的plugins\資料夾即可使用。別忘了把下面這行程式碼拷貝到同一目錄下的plugins.cfg檔案中,並完成Ponce的註冊:
PoncePonceCtrl+Shift+Z 0WIN
作業系統支援
Ponce支援在Windows、Linux和macOS上執行。
使用模式
-汙點引擎:這個引擎可以判斷程式碼執行的每一個步驟中,哪一部分記憶體或暫存器是使用者輸入可以控制的。
-符號引擎:這個引擎可以維護暫存器的符號狀態以及記憶體中的程式碼執行路徑。
使用樣例
通過符號執行來解決crackME
下面我們演示如何使用符號引擎以及如何求解約束:
1、 傳遞引數”aaaaa”; 2、 選擇符號引擎; 3、 轉換argv[1](aaaaa); 4、 識別符號情況; 5、 測試解決方案
Crackme原始碼:【 點我獲取 】
使用汙點引擎追蹤使用者輸入
接下來,我們看看如何使用汙點引擎並結合cmake來追蹤使用者輸入:
1、 以檔案作為引數傳遞給cmake,並進行檔案解析; 2、 選擇我們想要使用的汙點引擎; 3、 從檔案中讀取資料至緩衝區; 4、 檢視除錯控制器資料; 5、 Ponce將會重新命名汙點函式,並將受影響的函式資訊提供給使用者;