Hak Cipta 2011-2020 Google LLC
BinNavi adalah IDE analisis biner - sebuah lingkungan yang memungkinkan pengguna untuk memeriksa, menavigasi, mengedit, dan membuat anotasi grafik aliran kontrol dari kode yang dibongkar, melakukan hal yang sama untuk grafik panggilan yang dapat dieksekusi, mengumpulkan dan menggabungkan jejak eksekusi, dan secara umum melacak hasil analisis di antara sekelompok analis.
Catatan: Proyek BinNavi tidak lagi dalam pengembangan aktif.
BinNavi menggunakan perpustakaan visualisasi grafik pihak ketiga komersial (yFiles) untuk menampilkan dan menata grafik. Perpustakaan ini sangat kuat, dan tidak mudah diganti.
Untuk melakukan pengembangan langsung menggunakan yFiles, Anda memerlukan lisensi pengembang untuk itu. Pada saat yang sama, kami ingin komunitas dapat berkontribusi pada BinNavi tanpa memerlukan lisensi komersial yFiles. Untuk melakukan hal ini dan mematuhi lisensi yFiles, semua antarmuka ke yFiles harus dikaburkan dengan benar.
Untuk mencapai hal ini, kami melakukan hal berikut:
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
Kami mendistribusikan file JAR yang sudah dibuat sebelumnya dengan semua kode di subpaket yfileswrap
- sudah ditautkan dan dikaburkan dengan yFiles. Jika Anda ingin mengubah atau menambahkan kode di BinNavi dan tidak memiliki lisensi yFiles, Anda dapat dengan bebas melakukan apa pun yang Anda inginkan dalam paket non-yfileswrap - Anda cukup memasukkan lib/yfileswrap-obfuscated.jar
ke dalam classpath Anda untuk tes dan lihat hasilnya.
Jika Anda ingin melakukan perubahan pada subdirektori yfileswrap
, perlu diketahui bahwa Anda memerlukan lisensi yFiles yang valid - dan kontribusi apa pun yang Anda berikan pada proyek BinNavi harus menghormati perjanjian lisensi mereka. Ini berarti Anda tidak bisa begitu saja mengekspos API bagian dalamnya dengan nama yang berbeda, dll.
Kami akan menerapkan ini - kami sangat senang telah menemukan cara untuk menjadikan BinNavi sumber terbuka dengan ketergantungan yFiles, dan kami akan memastikan bahwa kode apa pun yang kami tarik menghormati lisensi yFiles.
Untuk membangun kembali perpustakaan pembungkus yFiles, pertama-tama salin y.jar
dan ysvg.jar
ke third_party/java/yfiles
. Kemudian bangun kembali dengan:
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 menggunakan Maven untuk manajemen ketergantungannya, namun tidak untuk build sebenarnya. Java 11 adalah versi minimum yang didukung.
Untuk membangun dari awal gunakan perintah ini:
mvn dependency:copy-dependencies
ant build-binnavi-fat-jar
Perlu diketahui bahwa BinNavi menggunakan database pusat PostgreSQL untuk menyimpan pembongkaran/komentar/jejak - jadi Anda perlu menjalankan instance seperti itu di tempat yang dapat Anda akses. Anda dapat meluncurkan BinNavi sebagai berikut:
java -jar target/binnavi-all.jar
Memuat kode ke Eclipse untuk pengembangan lebih lanjut memerlukan sedikit konfigurasi.
build.xml
PROJECT_LOC/src/main/java
java
**/yfileswrap/**
ke daftar direktori yang akan dikecualikan.CMain
.Anda harus siap untuk pergi dari sini.
Sebagai bagian dari proyek ini, kami mendistribusikan plugin IDA Pro yang mengekspor pembongkaran dari IDA ke format database PostgreSQL yang diperlukan BinNavi. Saat menjalankan BinNavi, cukup konfigurasikan jalur yang benar untuk IDA, klik tombol "instal plugin" jika perlu -- Anda sekarang dapat mengimpor pembongkaran.
Saat ini, kami hanya memiliki plugin ekspor IDA - namun kami sangat berharap seseorang akan membantu kami membangun fungsi ekspor untuk disassembler lain dalam waktu dekat.
Harap dicatat bahwa saat ini build Maven adalah sistem build otoritatif untuk BinNavi. Gradle murni eksperimental dan kemungkinan besar akan berubah.
Anda dapat membangun BinNavi dengan gradle dengan menjalankan perintah berikut:
Di Linux/OS X:
$ ./gradlew clean jar
Di Windows:
/gradlew.bat clean jar
Ini akan menghasilkan toples di rute proyek di bawah build/libs/
.
Di Linux/OS X:
$ ./gradlew eclipse
Di Windows:
./gradlew.bat eclipse
Sebagai bagian dari proses pembuatan proyek, dependensi akan diunduh. Setelah selesai lakukan hal berikut untuk memuat ke Eclipse:
Ruang kerja Eclipse Anda sekarang sudah diatur dan selesai untuk BinNavi.
Di Linux/OS X:
$ ./gradlew idea
Di Windows:
./gradlew.bat idea
Sebagai bagian dari proses pembuatan proyek, dependensi akan diunduh. Setelah selesai lakukan hal berikut untuk memuat ke IntelliJ:
Lingkungan IntelliJ Anda sekarang telah diatur dan selesai untuk IntelliJ.