我正在尋找類似 Beyond Compare
, meld
, kdiff
等的工具,該工具可用於比較兩個反彙編的二進製文件。我知道有一個二進制(十六進制)比較,它顯示了十六進制值之間的差異,但是我正在尋找可以顯示操作碼和參數的東西。
任何人都知道可以提供幫助的東西嗎?
我正在尋找類似 Beyond Compare
, meld
, kdiff
等的工具,該工具可用於比較兩個反彙編的二進製文件。我知道有一個二進制(十六進制)比較,它顯示了十六進制值之間的差異,但是我正在尋找可以顯示操作碼和參數的東西。
任何人都知道可以提供幫助的東西嗎?
除非我弄錯了,否則聽起來您正在尋找二進制比較工具。以下是一些不錯的選擇。 這些都需要IDA Pro。
DarunGrim(開源)
BinDiff(商業)
eEye Binary Diffing Suite(使用archive.org下載安裝程序)
您還可以嘗試radiff2(不需要IDA;),它是 radare工具套件中的工具。它支持增量差異(-d),graphdiff(-g)和許多相關的功能。
這裡有很多不錯的選擇。但是,它們似乎都沒有得到維護。我推薦您使用的工具是Diaphora https://github.com/joxeankoret/diaphora(免責聲明:我是作者)。是IDA Pro的純Python插件,用於進行程序差異處理,是唯一可以導入/導出結構,枚舉等的插件,也是唯一一個使用Hex-Rays反編譯器的插件,更有趣的是,它得到維護:我上次提交更改的時間是上週。
一些屏幕截圖:
Diffing MS015-034:
Diffing偽代碼(MS015-050):
差異MS015-050:
此外,還有 Turbodiff,它是IDA專業版插件。雖然還沒有使用過,但是我不能說這個工具的質量。
如果您使用的是IDA Pro,我也建議使用 PatchDiff2。
以下是說明: b>
PatchDiff2是IDA反彙編程序的插件,可以分析兩個IDB文件並找出兩者之間的差異。 PatchDiff2是免費的,並且與Windows和Linux上的最新版本的IDA(6.1)完全集成。該插件可以執行以下任務:
此插件的主要目的是在執行以下操作時快速並給出準確的結果安全修補程序或修補程序。因此,不能使用此工具在兩個不同的程序之間查找相似的功能。 Patchdiff2支持IDA可以處理的所有處理器,並提供兩種版本:32位和64位。
要使用所有您需要做的是: b>
解壓縮兩個patch2diff zip,將在其中兩個文件夾中分別包含Linux和Windows的兩個文件,只需將patchdiff2.p64和patchdiff2.plw複製到位於 C:\ Program Files \ IDA Pro Directory \插件\ b>
警告需要一段時間,IDA將變得無響應。最後,您將擁有一些選項卡,“匹配功能”,“不匹配功能”,“相同功能”。
我非常喜歡 kdiff路線,因為它既快捷又乾淨。注意:我使用diff來編寫惡意軟件的簽名。大多數時候,我需要簡單了解不同的說明。如果您需要更深入地研究,請按照Mick所說的BinDiff或DarunGrim路線進行。
為了使用kdiff來比較二進製文件,您將需要IDA生成的反彙編輸出。以下腳本可用於為工作目錄中的所有可執行文件創建程序集輸出。
import os import subprocessimport globpaths = glob.glob(“ *。exe”)ida_path = os.path.join(os.environ ['PROGRAMFILES'],“ IDA”,“ idaw。 exe“),用於路徑中的file_path:subprocess.call([ida_path,” -B“,file_path])
執行腳本。
C:\ Documents and Settings \ Administrator \ Desktop \ diff \ python make-asm.py感謝您使用IDA。祝你有美好的一天!C:\ Documents and Settings \ Administrator \ Desktop \ diff>dir C:\ Documents and Settings \ Administrator \ Desktop \ diff \ Direct10 / 25/2013 11:16 AM <DIR> .10 / 25/2013 11:16 AM <DIR> ..10 / 25/2013 11:16 AM 40,604 a.asm10 / 24/2013 08:35 AM 9,938 a.exe10 / 25/2013 11:16 AM 368,957 a.idb10 / 25/2013 11:16 AM 40,657 b .asm10 / 24/2013 08:35 AM 9,969 b.exe10 / 25/2013 11:16 AM 368,957 b.idb10 / 25/2013 11:15 AM 218 make-asm.py
選擇兩個.asm文件,右鍵單擊,Kdiff,比較。尼斯和簡單的輸出。
您可以嘗試的另一種選擇是 Relyze (商業,獨立Windows桌面應用程序),它支持二進制差異。它匹配兩個Windows二進製文件之間的函數,並為您提供所有相等,已修改,已刪除和已添加函數的列表,以及一個百分比差異值,以便您可以查看任意兩個匹配函數的修改程度。
GUI通過交互式圖形顯示匹配的功能,因此您可以瀏覽它們並查看更改。可以在導航時同步兩個圖形,因此單擊一個圖形中的一條指令將在另一圖形中選擇匹配的指令(如果有)。