題:
如何在彙編代碼級別上區分兩個x86二進製文件?
Mellowcandle
2013-04-21 18:57:12 UTC
view on stackexchange narkive permalink

我正在尋找類似 Beyond Compare meld kdiff 等的工具,該工具可用於比較兩個反彙編的二進製文件。我知道有一個二進制(十六進制)比較,它顯示了十六進制值之間的差異,但是我正在尋找可以顯示操作碼和參數的東西。

任何人都知道可以提供幫助的東西嗎?

好吧,您始終可以從反彙編程序中獲取操作碼\參數的列表,並將它們作為兩個文本列表進行比較?甚至為Immunity Debugger構建python腳本:)
為什麼反彙編中的diff / meld / kdiff / ...不令人滿意?
@Mellowcandle +1提及kdiff。這是進行快速差異分析的好工具。
@Gilles:參見[我在這裡的問答](http://reverseengineering.stackexchange.com/questions/1902)。
七 答案:
Mick
2013-04-21 19:47:56 UTC
view on stackexchange narkive permalink

除非我弄錯了,否則聽起來您正在尋找二進制比較工具。以下是一些不錯的選擇。 這些都需要IDA Pro。

  1. DarunGrim(開源)DarunGrim

  2. BinDiff(商業)BinDiff

  3. eEye Binary Diffing Suite(使用archive.org下載安裝程序)

  4. ol>
大。正是我一直在尋找的東西
根據您提供的鏈接,eye Binary Diffing Suite是開源的,其中一部分是DarunGrim。
值得一提的是,它們全都在IDA之上運行,而不是獨立運行。
也與之相關:[BinDiff的工作方式](http://reverseengineering.stackexchange.com/questions/1475/how-does-bindiff-work/1511#1511)
jvoisin
2013-10-25 18:06:25 UTC
view on stackexchange narkive permalink

您還可以嘗試radiff2(不需要IDA;),它是 radare工具套件中的工具。它支持增量差異(-d),graphdiff(-g)和許多相關的功能。

joxeankoret
2015-06-04 11:29:30 UTC
view on stackexchange narkive permalink

這裡有很多不錯的選擇。但是,它們似乎都沒有得到維護。我推薦您使用的工具是Diaphora https://github.com/joxeankoret/diaphora(免責聲明:我是作者)。是IDA Pro的純Python插件,用於進行程序差異處理,是唯一可以導入/導出結構,枚舉等的插件,也是唯一一個使用Hex-Rays反編譯器的插件,更有趣的是,它得到維護:我上次提交更改的時間是上週。

一些屏幕截圖:

Diffing MS015-034:enter image description here

Diffing偽代碼(MS015-050):enter image description here

差異MS015-050:enter image description here

BinDiff的最佳替代品,可在IDA7 +中使用。
聽起來像是個很棒的工具,但是為什麼要把它與該IDA專業版捆綁起來呢?至少IDA Free或Ghidra怎麼樣?不是每個人都能負擔得起他們想要的一堆錢。
因為IDA是事實上的逆向工程工具,所以IDA Free缺少許多功能,Ghidra不支持Python 3.x,而且因為在我寫Diaphora的時候還沒有任何公開版本。我有一些計劃移植到Ghidra,但這是一項艱鉅的工作。隨意嘗試。
newgre
2013-04-21 21:25:57 UTC
view on stackexchange narkive permalink

此外,還有 Turbodiff,它是IDA專業版插件。雖然還沒有使用過,但是我不能說這個工具的質量。

您知道這是否適用於IDA 6.x嗎?他們只列出了IDA 4.9和5.x支持。
Turbodiff已被放棄,不適用於最新的IDA。
請添加有關該插件的簡短說明。僅鏈接的答案不視為答案。
這是IDA Pro的二進制差異插件。我認為此答案中沒有任何相關的內容,不是嗎?
@newgre:最終與PatchDiff2相同嗎?
Anton Kochkov
2013-04-21 23:29:09 UTC
view on stackexchange narkive permalink

如果您使用的是IDA Pro,我也建議使用 PatchDiff2

以下是說明: b>

PatchDiff2是IDA反彙編程序的插件,可以分析兩個IDB文件並找出兩者之間的差異。 PatchDiff2是免費的,並且與Windows和Linux上的最新版本的IDA(6.1)完全集成。該插件可以執行以下任務:

  • 顯示相同功能的列表
  • 顯示匹配功能的列表
  • 顯示不匹配功能的列表(使用CRC)
  • 顯示相同功能和匹配功能的流程圖

此插件的主要目的是在執行以下操作時快速並給出準確的結果安全修補程序或修補程序。因此,不能使用此工具在兩個不同的程序之間查找相似的功能。 Patchdiff2支持IDA可以處理的所有處理器,並提供兩種版本:32位和64位。

要使用所有您需要做的是: b>

解壓縮兩個patch2diff zip,將在其中兩個文件夾中分別包含Linux和Windows的兩個文件,只需將patchdiff2.p64和patchdiff2.plw複製到位於 C:\ Program Files \ IDA Pro Directory \插件\ b>

  • 打開要進行比較的可執行文件,並將其另存為.idb(默認)。
  • 打開文件的.idb(我注意到僅在擴展exe時它會失敗),然後在IDA View-A選項卡中轉到Edit to plugins,您應該看到PatchDiff2只需單擊它並選擇要比較的輔助.idb。

警告需要一段時間,IDA將變得無響應。最後,您將擁有一些選項卡,“匹配功能”,“不匹配功能”,“相同功能”。

請添加有關該插件的簡短說明。僅鏈接的答案不視為答案。
alexanderh
2013-10-25 20:33:20 UTC
view on stackexchange narkive permalink

我非常喜歡 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,比較。尼斯和簡單的輸出。

r

QAZ
2015-06-18 15:01:31 UTC
view on stackexchange narkive permalink

您可以嘗試的另一種選擇是 Relyze (商業,獨立Windows桌面應用程序),它支持二進制差異。它匹配兩個Windows二進製文件之間的函數,並為您提供所有相等,已修改,已刪除和已添加函數的列表,以及一個百分比差異值,以便您可以查看任意兩個匹配函數的修改程度。

GUI通過交互式圖形顯示匹配的功能,因此您可以瀏覽它們並查看更改。可以在導航時同步兩個圖形,因此單擊一個圖形中的一條指令將在另一圖形中選擇匹配的指令(如果有)。

Binary Diffing with Relyze



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...