商業程序分析測試軟件BinNavi開源了

jopen 9年前發布 | 16K 次閱讀 BinNavi
 

得益于IDA pro十分開放的架構,Gergely Erdelyi和Ero Carrera在2004年基于IDA pro發布了IDAPython,逆向工程師能夠以Python腳本的形式訪問IDC腳本引擎核心、完整的IDA插件API,以及所有與Python捆綁 在一起的常見模塊。IDAPython無論是在商業產品中(例如Zynamics的BinNavi),還是在一些開源項目中(例如Paimei和 PyEmu)均有所應用。

今天,商業版本的BinNavi終于開源了!下載地址見參考來源。

商業程序分析測試軟件BinNavi開源了

功能簡介

1)開放式數據庫格式:zynamics BinNavi現在所有的數據存儲在MySQL數據庫中方便,靈活的格式。這有利于減輕解體分配結果導致的多重用戶,數據管理和備份。

2)集成的Python解釋程序:zynamics BinNavi允許訪問整個解體,所有callgraph和flowgraph的結構,更方便的從一個綜合的Python命令行調試內存和寄存器。

3)可用性zynamics BinNavi GDB允許在任何平臺上調試:支持調試串行協議。這包括大多數的Unix和網絡的嵌入式設備,如思科路由器和防火墻V*N設備。

4)zynamics BinNavi目前支持的平臺(用于調試)是Win32/x86和Linux/x86 (ptrace ),可以在WinCE/ARM中調試和實驗。圖形用戶界面是純Java的,以在windows,MacOS和Liunx測試成功。

復雜的第三方依賴

BinNavi使用一個第三方的商業圖形可視化庫 (yFiles) ,這個庫十分強大而且難以替換。為了使用yFiles直接進行開發,你需要獲取開發人員許可。與此同時我們希望你能夠為BinNavi社區做出貢獻,而不 必拘于yFiles商業許可。為了在不破壞yFiles許可的前提下做到這一點,所有連接到yFiles的接口都需要經過混淆處理。

為了實現這個目標,我們做了如下這些事:

BinNavi以及所有的庫都拆分成兩部分:項目一部直接依賴于yFiles,我們把這一部分叫做"yfileswrap":

com.google.security.zynamics.binnavi
com.google.security.zynamics.binnavi.yfileswrap
com.google.security.zynamics.zylib
com.google.security.zynamics.zylib.yfileswrap
com.google.security.zynamics.reil
com.google.security.zynamics.reil.yfileswrap

我們分配一個預先構建好的JAR文件到"yfileswrap" 分包中的代碼中(預先鏈接并混淆yFiles)。如果你想在BinNavi中添加或者刪除代碼但沒有yFiles的許可,這時你就可以自由的在non- yfileswrap分包中充分發揮你的想象力,你可以將lib/yfileswrap-obfuscated.jar放入類路徑中進行測試并查驗結果。

如果你想改變yfileswrap分包,請注意你得需要一個yFiles許可!

搭建Binnavi

BinNavi使用Maven進行依賴關系管理,但實際上沒有進行構建。從頭開始構建使用這些命令:

mvn dependency:copy-dependencies
ant -f src/main/java/com/google/security/zynamics/build.xml \
  build-binnavi-fat-jar

初次運行Binnavi

請注意Binnavi主要使用PostgreSQL數據庫存儲disassemblies/comments/traces,所以你需要一個你能夠訪問到的實例。

你可以使用下面方法構建/打開Binnavi

ant -f src/main/java/com/google/security/zynamics/build.xml \
  build-binnavi-fat-jar
java -jar target/binnavi-all.jar

把項目加載到Eclipse

將代碼加載到Eclipse之后,我們還需要進行一些配置。

1)下載依賴性組件(如上所述)并確定你有正確安裝Java SDK 1.8

2)創建一個“從現有Ant構建文件中創建一個Java項目”并使src/main/java/com/google/security/zynamics/build.xml文件

3)在目標"build-binnavi-jar"中選擇'"javac" 任務

4)打開項目屬性對話框

5)編輯源文件夾:

1.有關文件夾位置:$SRCDIR/src/main/java

2.文件名:java

3.點擊下一步

6)將binnavi/yfileswrap, zylib/yfileswrap,和reil/yfileswrap添加到排除的目錄列表中

7)點擊運行>調試配置,選擇Java應用程序,然后搜索"CMain".

從IDA輸出反匯編

作為項目的一部分,我們只分配了一個只讀二進制(sorry!)IDA pro插件從IDA輸出的反匯編轉換成Binnavi所需要的Postgresql數據庫格式。當運行Binnavi,只需簡單的配置正確的IDA路徑,如果有必要的話還需要單擊“安裝插件”按鈕。

使用其他反匯編程序

沒錯,我們現在僅支持IDA導出插件。未來我們非常希望有朋友能夠幫助我們構建其他的插件!

* 參考來源 github ,譯者/鳶尾 轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!