พื้นที่เก็บข้อมูลนี้ประกอบด้วยเอกสารประกอบและซอร์สโค้ดของ C++, Python และ Rust API สำหรับแพลตฟอร์มวิศวกรรมย้อนกลับของ Binary Ninja
เอกสารออนไลน์มีให้สำหรับ API ต่อไปนี้:
ในการสร้าง Binary Ninja API คุณจะต้องใช้การแก้ไขเฉพาะที่ตรงกับแฮชจากไฟล์ api_REVISION.txt
ไฟล์นี้ควรอยู่ในโฟลเดอร์การติดตั้งรูทสำหรับ Linux และ Windows หรือโฟลเดอร์ย่อย Contents/Resources
ของแอปบน macOS วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการโคลนที่เก็บนี้ (หรือเพิ่มเป็นโมดูลย่อย) และทำบางอย่างเช่น git checkout $(cat api_REVISION.txt | awk -F/ '{print $NF}')
คุณสามารถดูเอกสารวิธีการตั้งค่านี้ด้วยบางอย่างเช่น cmake
ได้ที่นี่
หากต้องการเขียนปลั๊กอิน Binary Ninja โดยใช้ C++ คุณจะต้องสร้าง C++ API การสร้างไลบรารี API นั้นทำได้คล้ายกับโปรเจ็กต์ที่ใช้ CMake ส่วนใหญ่ ขั้นตอนพื้นฐานมีดังต่อไปนี้:
# Get the source
git clone https://github.com/Vector35/binaryninja-api.git
cd binaryninja-api
git submodule update --init --recursive
# Configure an out-of-source build setup
cmake -S . -B build # (additional arguments go here if needed)
# Compile
cmake --build build -j8
นอกเหนือจากการตั้งค่าบิลด์เริ่มต้นแล้ว คุณอาจต้องการ:
-DBN_API_BUILD_EXAMPLES=ON
ไปที่ CMake เมื่อกำหนดค่าบิลด์ หลังจากที่บิลด์สำเร็จ คุณสามารถติดตั้งปลั๊กอินที่สร้างขึ้นได้โดยการรันเป้าหมาย install
เมื่อใช้ตัวสร้างบิลด์ "Unix Makefiles" ดูเหมือนว่า: make install
-DHEADLESS=ON
ไปยัง CMake เมื่อกำหนดค่าบิวด์-DBN_INSTALL_DIR=/path/to/binaryninja
ไปยัง CMake เมื่อกำหนดค่าการตั้งค่าบิลด์LNK1107
อาจบ่งชี้ว่าบิตของคุณไม่ตรงกัน มีตัวอย่างมากมาย โฟลเดอร์ตัวอย่าง Python สาธิตแอปพลิเคชันต่างๆ มากมายของ Python API ในขณะที่ตัวอย่าง C++ ได้แก่:
* ต้องมีใบอนุญาตที่รองรับการเข้าถึง API แบบไม่มีหัว
ตัวติดตามปัญหาสำหรับพื้นที่เก็บข้อมูลนี้ไม่เพียงแต่ติดตามปัญหาเกี่ยวกับซอร์สโค้ดที่มีอยู่ที่นี่ แต่ยังรวมถึงผลิตภัณฑ์ Binary Ninja ที่กว้างขึ้นด้วย
พื้นที่เก็บข้อมูลนี้มีสองสาขาหลัก dev
และ master
สาขา dev
มีการอัปเดตล่าสุดและติดตามการพัฒนาล่าสุดของ Binary Ninja ควรทำการร้องขอการดึงกับสาขานี้ สาขา master
ติดตามโครงสร้างที่มั่นคงของ Binary Ninja หากคุณเพิ่งติดตั้ง Binary Ninja เป็นครั้งแรก คุณน่าจะอยู่ในช่องทางการเผยแพร่ที่เสถียร
การมีส่วนร่วมของสาธารณะยินดีต้อนรับสู่พื้นที่เก็บข้อมูลนี้ API และเอกสารประกอบส่วนใหญ่ในพื้นที่เก็บข้อมูลนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT อย่างไรก็ตาม อินเทอร์เฟซ API กับแอปพลิเคชันเชิงพาณิชย์แบบปิดอย่าง Binary Ninja นอกจากนี้ Rust API ยังได้รับใบอนุญาตภายใต้ใบอนุญาต Apache 2.0
หากคุณสนใจที่จะมีส่วนร่วมเมื่อคุณส่ง PR ครั้งแรก คุณจะได้รับการแจ้งเตือนจากผู้ช่วย CLA ที่อนุญาตให้คุณลงนามในข้อตกลงใบอนุญาตการให้การสนับสนุนทางออนไลน์
พื้นที่เก็บข้อมูลนี้มีปลั๊กอินแพลตฟอร์มทั้งหมดของเราที่นี่:
พื้นที่เก็บข้อมูลนี้มีปลั๊กอินสถาปัตยกรรมทั้งหมดที่มีอยู่ใน Binary Ninja รุ่น Personal และ Commercial คุณสามารถค้นหาแต่ละสถาปัตยกรรมได้ที่นี่:
พื้นที่เก็บข้อมูลนี้มีปลั๊กอิน Binary View Type ทั้งหมดของเราที่นี่:
นอกจากที่เก็บ API หลักนี้ที่เป็นโอเพ่นซอร์ส Vector35 ยังมีโอเพ่นซอร์ส Debugger และปลั๊กอิน Objective-C โอเพ่นซอร์สเช่นกัน:
ส่วนประกอบบางอย่างอาจเผยแพร่ภายใต้ใบอนุญาตโอเพ่นซอร์สที่เข้ากันได้แต่แตกต่างกันเล็กน้อย และจะมีไฟล์ใบอนุญาตของตัวเองตามความเหมาะสม
ส่วนประกอบที่เหลือได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT
โปรดทราบว่าไฟล์ .lib
จะรวมอยู่ในไบนารี่ดั้งเดิมของ Binary Ninja สำหรับ windows ไฟล์ lib เหล่านั้นยังได้รับการเผยแพร่ภายใต้ใบอนุญาตเดียวกันกับพื้นที่เก็บข้อมูลนี้ และอาจเผยแพร่ตามนั้น