อ่าน 3 นาที
ไบนารีนินจา
Binary Ninja เป็นแพลตฟอร์มวิศวกรรมย้อนกลับที่พัฒนาโดย Vector 35 Inc.
ไบนารีนินจา
| ไบนารีนินจา | |
|---|---|
| ผู้เขียนต้นฉบับ | จอร์แดน เวียนนา, รัสตี้ วากเนอร์, ปีเตอร์ ลาฟอสส์ |
| นักพัฒนา | Vector 35 Inc [ 1 ] |
| ปล่อย | 31 กรกฎาคม 2559 [ 2 ] |
| เวอร์ชันเสถียร | 5.3.9757 / 9 มิถุนายน 2026 [ 2 ] |
| เขียนเป็น | C++ , C , Python , Rust |
| ระบบปฏิบัติการ | ระบบปฏิบัติการ Windows , Mac OS XและLinux |
| มีจำหน่ายใน | ภาษาอังกฤษ |
| พิมพ์ | วิศวกรรมย้อนกลับ , ตัวแยกส่วนประกอบ , ตัวถอดรหัส |
| ใบอนุญาต | กรรมสิทธิ์ |
| เว็บไซต์ | ไบนารี |
Binary Ninjaเป็นแพลตฟอร์มวิศวกรรมย้อนกลับที่พัฒนาโดย Vector 35 Inc. [ 1 ]ช่วยให้ผู้ใช้สามารถแยกส่วนประกอบของไฟล์ไบนารีและแสดงภาพการแยกส่วนประกอบในมุมมองเชิงเส้นและแบบกราฟได้ ซอฟต์แวร์นี้ทำการวิเคราะห์โค้ดเชิงลึกโดยอัตโนมัติ สร้างข้อมูลที่ช่วยในการวิเคราะห์ไบนารี โดยจะแปลงคำสั่งแอสเซมบลีเป็นภาษาตัวกลางและสร้างโค้ดที่ถอดรหัสแล้ว
Binary Ninja รองรับสถาปัตยกรรม CPU และรูปแบบไฟล์ปฏิบัติการไบนารีที่หลากหลาย และทำงานบน Windows, macOS และ Linux นอกจากนี้ยังมีเวอร์ชันคลาวด์ที่ใช้งานได้ฟรีและเวอร์ชันเชิงพาณิชย์แบบเนทีฟอีกด้วย[ 3 ]
ประวัติศาสตร์
เดิมทีพัฒนาขึ้นเป็นเครื่องมือภายในสำหรับทีมCTF [ 4 ]ต่อมานักพัฒนาได้ก่อตั้ง Vector 35 Inc. เพื่อเปลี่ยน Binary Ninja ให้เป็นผลิตภัณฑ์เชิงพาณิชย์ การพัฒนาเริ่มขึ้นในปี 2015 และเวอร์ชันสาธารณะแรกเปิดตัวในเดือนกรกฎาคม 2016
เวอร์ชันเชิงพาณิชย์ได้รับการพัฒนาขึ้นใหม่ทั้งหมดและไม่มีการใช้โค้ดร่วมกับเครื่องมือภายในดั้งเดิม[ 4 ]ซึ่งปัจจุบันเป็นโอเพนซอร์สภายใต้ใบอนุญาตGPLv2 [ 5 ]
คุณสมบัติและการใช้งาน
ส่วนติดต่อผู้ใช้
ส่วนติดต่อผู้ใช้ของ Binary Ninja สร้างขึ้นโดยใช้Qtและประกอบด้วยส่วนประกอบหลายอย่าง เช่น รายการสัญลักษณ์ หน้าต่างอ้างอิงโยง และมุมมองการถอดประกอบ (ทั้งแบบเชิงเส้นและแบบกราฟ) กราฟขนาดเล็ก และแผนที่คุณลักษณะ นอกจากนี้ยังรวมถึงเครื่องมือต่างๆ เช่น ตัวแก้ไขเลขฐานสิบหก การแสดงรายการสตริง และมุมมองการคัดกรองปัญหา
Binary Ninja สร้างคำอธิบายประกอบอย่างละเอียดใน UI เพื่อช่วยในการวิเคราะห์ไบนารี และยังรองรับธีมที่ผู้ใช้กำหนดเองเพื่อการปรับแต่ง[ 6 ]
API และปลั๊กอิน
Binary Ninja มี API ที่สามารถเข้าถึงได้ผ่านPython , C++หรือRust [ 7 ] API นี้เป็นโอเพนซอร์สภายใต้ใบอนุญาต MIT [ 8 ] สามารถโต้ตอบกับฟังก์ชันส่วนใหญ่ของ Binary Ninja ได้รวมถึงอินเทอร์เฟซผู้ใช้ เครื่องมือวิเคราะห์ และภาษาตัวกลาง (ดูด้านล่าง) สามารถใช้เพื่อเพิ่มการสนับสนุนสถาปัตยกรรมใหม่หรือเพื่อทำให้งานเป็นไปโดยอัตโนมัติ
ปลั๊กอิน[ 9 ]สามารถพัฒนาได้โดยใช้ API เพื่อปรับปรุง Binary Ninja Vector35 รวบรวมปลั๊กอินอย่างเป็นทางการ[ 10 ]ในขณะที่ชุมชนได้สร้างปลั๊กอินเพิ่มเติมจำนวนมาก[ 11 ]
ปลั๊กอินที่โดดเด่นบางส่วนได้แก่ ดีบักเกอร์[ 12 ]และชุดลายเซ็น[ 13 ]
Binary Ninja Intermediate Languages (BNIL)
Binary Ninja มีภาษาตัวกลาง (ILs) ให้เลือกสามภาษา
- IL ระดับต่ำ (LLIL) [ 14 ]ให้รายละเอียดการยกคำสั่งพื้นฐานจากสถาปัตยกรรมต่างๆ ไปสู่การแสดงแทนแบบรวม
- IL ระดับกลาง (MLIL) [ 15 ]สร้างตัวแปรที่มีประเภทและแยกแนวคิดของสแต็กออกไป
- ภาษาโปรแกรมระดับสูง (HLIL หรือที่รู้จักกันในชื่อดีคอมไพเลอร์) นำเสนอการแสดงโค้ดที่คล้ายกับซอร์สโค้ดภาษาซี
การวิเคราะห์แกนกลาง
Binary Ninja จะทำการวิเคราะห์ต่างๆ บนไฟล์ไบนารีโดยอัตโนมัติ ตัวอย่างเช่น:
- การตรวจจับฟังก์ชัน
- การอ้างอิงโยงสำหรับรหัสและข้อมูล
- การอนุมานประเภท
- การแพร่กระจายอย่างต่อเนื่อง
- การวิเคราะห์ชุดค่า
- ความละเอียดของตารางกระโดด
การแก้ไขและต่อเติมไบนารี, คอมไพเลอร์เชลล์โค้ด (SCC)
Binary Ninja นำเสนอคุณสมบัติการแก้ไขและปรับแต่งไบนารี สามารถประกอบคำสั่งที่บรรทัดปัจจุบัน พลิกกลับการกระโดดแบบมีเงื่อนไข ฯลฯ การแก้ไขและการวิเคราะห์ที่อัปเดตจะแสดงผลใน UI ทันที
Binary Ninja สามารถใช้เป็นโปรแกรมแก้ไขไบนารีทั่วไปได้ รองรับการแปลงและการเข้ารหัสอัลกอริธึมที่ใช้กันทั่วไปหลายแบบ
คอมไพเลอร์เชลล์โค้ดช่วยให้ผู้ใช้สามารถคอมไพล์และแทรกโค้ดผ่านไวยากรณ์ภาษาซีได้
สถาปัตยกรรมที่รองรับและรูปแบบไฟล์ปฏิบัติการ
สถาปัตยกรรม
Binary Ninja รองรับสถาปัตยกรรม CPU ต่อไปนี้อย่างเป็นทางการ:
- x86 32 บิต
- x86 64 บิต
- อาร์เอ็มวี7
- ทธัมบ์2
- อาร์เอ็มวี8
- พาวเวอร์พีซี
- เอ็มไอพีเอส
- RISC-V
- 6502
- nanoMIPS (เฉพาะรุ่น Ultimate)
- TriCore (เฉพาะรุ่น Ultimate)
- หกเหลี่ยม (เฉพาะรุ่น Ultimate)
การสนับสนุนสถาปัตยกรรมเหล่านี้แตกต่างกันไป และสามารถดูรายละเอียดได้ในคำถามที่พบบ่อยอย่างเป็นทางการ[ 16 ]
ปลั๊กอินที่เขียนโดยชุมชนจะเพิ่มการสนับสนุนสำหรับสถาปัตยกรรมอื่นๆ อีกหลายประเภท[ 17 ]
รูปแบบไฟล์ปฏิบัติการ
Binary Ninja รองรับรูปแบบไฟล์ปฏิบัติการต่อไปนี้อย่างเป็นทางการ:
- พีอี/คอฟฟ์
- เอลฟ์
- ผู้ชาย
- ไฟล์ไบนารี .NES (ผ่านปลั๊กอิน)
- ไบนารีดิบ
- เอ็มดี1รอม
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ไบนารีนินจา
Binary Ninja เป็นแพลตฟอร์มวิศวกรรมย้อนกลับที่พัฒนาโดย Vector 35 Inc.
ประวัติศาสตร์
เดิมทีพัฒนาขึ้นเป็นเครื่องมือภายในสำหรับทีม CTF [ 4 ] ต่อมานักพัฒนาได้ก่อตั้ง Vector 35 Inc. เพื่อเปลี่ยน Binary Ninja ให้เป็นผลิตภัณฑ์เชิงพาณิชย์ การพัฒนาเริ่มขึ้นในปี 2015 และเวอร์ชันสาธารณะแรกเปิดตัวในเดือนกรกฎาคม 2016
ส่วนติดต่อผู้ใช้
ส่วนติดต่อผู้ใช้ของ Binary Ninja สร้างขึ้นโดยใช้ Qt และประกอบด้วยส่วนประกอบหลายอย่าง เช่น รายการสัญลักษณ์ หน้าต่างอ้างอิงโยง และมุมมองการถอดประกอบ (ทั้งแบบเชิงเส้นและแบบกราฟ) กราฟขนาดเล็ก และแผนที่คุณลักษณะ นอกจากนี้ยังรวมถึงเครื่องมือต่างๆ เช่น...
API และปลั๊กอิน
Binary Ninja มี API ที่สามารถเข้าถึงได้ผ่าน Python , C++ หรือ Rust [ 7 ] API นี้เป็นโอเพนซอร์สภายใต้ใบ อนุญาต MIT [ 8 ] สามารถโต้ตอบกับฟังก์ชันส่วนใหญ่ของ Binary Ninja ได้ รวมถึงอินเทอร์เฟซผู้ใช้ เครื่องมือวิเคราะห์ และภาษาตัวกลาง (ดูด้านล่าง)...