2013-06-25 64 views
1

給定任意可執行文件,是否可以確定部分或全部間接分支目標地址?什麼是計算這些目的地的程序化方法?我在問,因爲我正在從可執行文件重新構建CFG,並且無法找出計算間接分支的乾淨方式。有時操作數可以通過一些法醫分析來確定,但其他時間則不太清楚。間接跳轉目的地計算

+0

您正在討論通過反彙編找不到的目的地嗎?基本上使用一個指令集模擬器。或者乾脆分析。其中的一些你將無法完全解決(不模擬所有真實世界的代碼路徑)。 –

+0

完全可以通過靜態分析完成嗎? – RouteMapper

回答

2

靜態計算已編譯程序中的可能間接分支目的地爲可能通過執行data-flow analysis來查找地址的可能值。

它可能適用於簡單的事情,如jump tables(通常從switch語句生成的東西)。

儘管在一般情況下,我認爲要從中得到相當好的結果是相當困難的 - 尤其是因爲我懷疑你的分析需要某種堆分析具有任何價值,那就是不容易,特別是在組裝上,可能會被裝載和存儲到內存中。