ลิขสิทธิ์ 2011-2020 Google LLC
BinNavi เป็น IDE การวิเคราะห์แบบไบนารี - สภาพแวดล้อมที่อนุญาตให้ผู้ใช้ตรวจสอบ นำทาง แก้ไข และใส่คำอธิบายประกอบในกราฟควบคุมของโค้ดที่แยกส่วน ทำเช่นเดียวกันกับ callgraph ของไฟล์ปฏิบัติการ รวบรวมและรวมการติดตามการดำเนินการ และโดยทั่วไปจะติดตาม ของผลการวิเคราะห์ระหว่างกลุ่มนักวิเคราะห์
หมายเหตุ: โครงการ 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
ลงใน classpath ของคุณเพื่อ ทดสอบและดูผลลัพธ์
หากคุณต้องการเปลี่ยนแปลงไดเรกทอรีย่อย yfileswrap
โปรดทราบว่าคุณจะต้องมีใบอนุญาต yFiles ที่ถูกต้อง และการสนับสนุนใด ๆ ที่คุณทำกับโครงการ BinNavi จะต้องเป็นไปตามข้อตกลงใบอนุญาตของพวกเขา ซึ่งหมายความว่าคุณไม่สามารถเปิดเผย API ภายในของพวกเขาภายใต้ชื่อที่แตกต่างกันได้ ฯลฯ
เราจะบังคับใช้สิ่งนี้ - เรายินดีเป็นอย่างยิ่งที่ได้พบวิธีโอเพ่นซอร์ส BinNavi ที่มีการพึ่งพา yFiles และเราจะตรวจสอบให้แน่ใจว่ารหัสใด ๆ ที่เราดึงมานั้นเคารพต่อสิทธิ์การใช้งาน yFiles
หากต้องการสร้างไลบรารี wrapper 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 เป็นรูปแบบฐานข้อมูล PostgreSQL ที่ BinNavi ต้องการ เมื่อเรียกใช้ BinNavi เพียงกำหนดค่าเส้นทางที่ถูกต้องสำหรับ IDA คลิกที่ปุ่ม "ติดตั้งปลั๊กอิน" หากจำเป็น - ตอนนี้คุณควรจะสามารถนำเข้าการแยกส่วนได้แล้ว
ขณะนี้เรามีเพียงปลั๊กอินส่งออกของ IDA เท่านั้น แต่เราหวังเป็นอย่างยิ่งว่าจะมีใครสักคนมาช่วยเราสร้างฟังก์ชันการส่งออกสำหรับเครื่องแยกชิ้นส่วนอื่นๆ ในอนาคตอันใกล้นี้
โปรดทราบว่าในปัจจุบัน Maven build เป็นระบบ build ที่น่าเชื่อถือสำหรับ BinNavi Gradle เป็นเพียงการทดลองเท่านั้นและมีแนวโน้มที่จะเปลี่ยนแปลง
คุณสามารถสร้าง BinNavi ด้วยการไล่ระดับได้โดยการรันสิ่งต่อไปนี้:
บนลินุกซ์ / OS X:
$ ./gradlew clean jar
บนวินโดวส์:
/gradlew.bat clean jar
สิ่งนี้จะสร้าง jar ในเส้นทางโปรเจ็กต์ภายใต้ build/libs/
บนลินุกซ์ / OS X:
$ ./gradlew eclipse
บนวินโดวส์:
./gradlew.bat eclipse
เนื่องจากเป็นส่วนหนึ่งของกระบวนการสร้างโครงการ โครงการจะดาวน์โหลดการขึ้นต่อกัน เมื่อเสร็จแล้วให้ทำดังต่อไปนี้เพื่อโหลดเข้าสู่ Eclipse:
ขณะนี้พื้นที่ทำงาน Eclipse ของคุณได้รับการตั้งค่าและเสร็จสมบูรณ์สำหรับ BinNavi แล้ว
บนลินุกซ์ / OS X:
$ ./gradlew idea
บนวินโดวส์:
./gradlew.bat idea
เนื่องจากเป็นส่วนหนึ่งของกระบวนการสร้างโครงการ โครงการจะดาวน์โหลดการขึ้นต่อกัน เมื่อเสร็จแล้วให้ทำดังต่อไปนี้เพื่อโหลดเข้าสู่ IntelliJ:
สภาพแวดล้อม IntelliJ ของคุณได้รับการตั้งค่าและเสร็จสมบูรณ์สำหรับ IntelliJ แล้ว