版權所有 2011-2020 Google LLC
BinNavi 是一個二進位分析 IDE - 一個允許用戶檢查、導航、編輯和註釋反彙編程式碼的控制流程圖的環境,對可執行檔的呼叫圖執行相同的操作,收集和組合執行跟踪,並通常進行跟踪一組分析師的分析結果。
注意:BinNavi 專案不再處於積極開發狀態。
BinNavi 使用商業第三方圖形視覺化函式庫 (yFiles) 來顯示和佈局圖形。這個庫非常強大,並且不容易被替換。
為了使用 yFiles 進行直接開發,您需要它的開發人員授權。同時,我們希望社區能夠為 BinNavi 做出貢獻,而無需商業 yFiles 授權。為了做到這一點並符合 yFiles 許可證,yFiles 的所有介面都需要適當的混淆。
為了實現這一目標,我們做了以下工作:
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 許可證,您可以在非 yfileswrap 套件中自由地執行幾乎所有您想要的操作 - 您只需將lib/yfileswrap-obfuscated.jar
放入您的類路徑即可測試並查看結果。
如果您希望更改yfileswrap
子目錄,請注意您將需要有效的 yFiles 許可證 - 並且您對 BinNavi 專案所做的任何貢獻都必須遵守其許可協議。這意味著您不能簡單地以不同的名稱等公開它們的內部 API。
我們將強制執行這一點 - 我們很高興找到了使用 yFiles 依賴項開源 BinNavi 的方法,並且我們將確保我們提取的任何程式碼都遵守 yFiles 授權。
若要重建 yFiles 包裝器庫,請先將y.jar
和ysvg.jar
複製到third_party/java/yfiles
。然後重建:
mvn dependency:copy-dependencies
ant build-yfiles-wrapper-jar
mvn install:install-file
-Dfile=target/yfileswrap-obfuscated.jar
-DgroupId=com.google.security.zynamics.binnavi
-DartifactId=yfileswrap-obfuscated
-Dversion=6.1
-Dpackaging=jar
-DlocalRepositoryPath=lib
BinNavi 使用 Maven 進行依賴管理,但不用於實際建置。 Java 11 是支援的最低版本。
要從頭開始構建,請使用以下命令:
mvn dependency:copy-dependencies
ant build-binnavi-fat-jar
請注意,BinNavi 使用中央 PostgreSQL 資料庫來儲存反組譯/註解/追蹤 - 因此您需要在您可以存取的地方執行這樣的實例。您可以按如下方式啟動 BinNavi:
java -jar target/binnavi-all.jar
將程式碼載入到 Eclipse 中進行進一步開發需要進行一些配置。
build.xml
PROJECT_LOC/src/main/java
java
**/yfileswrap/**
新增至要排除的目錄清單。CMain
。你應該準備好離開這裡了。
作為該專案的一部分,我們正在分發一個 IDA Pro 插件,該插件可將 IDA 中的反彙編匯出為 BinNavi 所需的 PostgreSQL 資料庫格式。執行 BinNavi 時,只需為 IDA 配置正確的路徑,如有必要,請按一下「安裝外掛程式」按鈕 - 現在您應該能夠匯入反彙編檔案了。
目前,我們只有 IDA 匯出外掛程式 - 但我們非常希望有人能在不久的將來幫助我們為其他反彙編程式建立匯出功能。
請注意,目前 Maven 建置是 BinNavi 的權威建置系統。 Gradle 純粹是實驗性的,很可能會改變。
您可以透過執行以下命令使用 gradle 建置 BinNavi:
在 Linux/OS X 上:
$ ./gradlew clean jar
在 Windows 上:
/gradlew.bat clean jar
這將在build/libs/
下的專案路徑中產生 jar。
在 Linux/OS X 上:
$ ./gradlew eclipse
在 Windows 上:
./gradlew.bat eclipse
作為專案建立過程的一部分,它將下載依賴項。完成後,執行以下操作將其載入到 Eclipse 中:
您的 Eclipse 工作區現已為 BinNavi 設定並完成。
在 Linux/OS X 上:
$ ./gradlew idea
在 Windows 上:
./gradlew.bat idea
作為專案建立過程的一部分,它將下載依賴項。完成後,執行以下操作將其載入到 IntelliJ 中:
您的 IntelliJ 環境現已針對 IntelliJ 設定並完成。