ลิขสิทธิ์ 2011-2024 Google LLC
ข้อจำกัดความรับผิดชอบ: นี่ไม่ใช่ผลิตภัณฑ์ของ Google อย่างเป็นทางการ (ทดลองหรืออย่างอื่น) เป็นเพียงรหัสที่เกิดขึ้นโดย Google
Binexport เป็นองค์ประกอบผู้ส่งออกของ Bindiff มันเป็นปลั๊กอิน/ส่วนขยายสำหรับ Disassemblers IDA Pro, Binary Ninja และ Ghidra ที่ส่งออกข้อมูลแยกชิ้นส่วนเข้าไปในรูปแบบบัฟเฟอร์โปรโตคอลที่ Bindiff ต้องการ
เวอร์ชันทดลองสำหรับซอฟต์แวร์โอเพนซอร์สชุดวิศวกรรมย้อนกลับ Ghidra มีอยู่ในไดเรกทอรี java/BinExport
ที่เก็บนี้มีซอร์สโค้ดที่สมบูรณ์ที่จำเป็นในการสร้างไบนารีปลั๊กอิน Binexport สำหรับ Linux, MacOS และ Windows
ดาวน์โหลดไบนารีจากหน้ารีลีสและคัดลอกลงในไดเรกทอรีปลั๊กอิน IDA Pro นี่คือเส้นทางเริ่มต้น:
| ระบบปฏิบัติการ | เส้นทางปลั๊กอิน |
|---|---|
| ลินเวกซ์ | /opt/idapro-8.2/plugins |
| แม็กอส | /Applications/IDA Pro 8.2/idabin/plugins |
| หน้าต่าง | %ProgramFiles%IDA 8.2plugins |
หากต้องการติดตั้งสำหรับผู้ใช้ปัจจุบันให้คัดลอกไฟล์ลงในหนึ่งในไดเรกทอรีเหล่านี้แทน:
| ระบบปฏิบัติการ | ปลั๊กอิน |
|---|---|
| Linux/MacOS | ~/.idapro/plugins |
| หน้าต่าง | %AppData%Hex-RaysIDA Proplugins |
ใน IDA เลือก Help | About programm...
คลิก Addons...
หากติดตั้งอย่างถูกต้องกล่องโต้ตอบต่อไปนี้จะปรากฏขึ้น:

ดาวน์โหลดไบนารีจากหน้ารีลีสและคัดลอกลงในไดเรกทอรีปลั๊กอินไบนารีนินจา นี่คือเส้นทางเริ่มต้นสำหรับผู้ใช้ปัจจุบัน:
| ระบบปฏิบัติการ | เส้นทางปลั๊กอิน |
|---|---|
| ลินเวกซ์ | ~/.binaryninja/plugins |
| แม็กอส | ~/Library/Application Support/Binary Ninja/plugins/ |
| หน้าต่าง | %AppData%Binary Ninjaplugins |
Log Native Dock หากไม่สามารถมองเห็นได้ให้เปิดใช้งานผ่านทาง View | Native Docks Show Log BinExport 12 (@internal, Jan 3 2023), (c)2004-2011 zynamics GmbH, (c)2011-2024 Google LLC.
File | Install Extensions...ghidra_BinExport.zip ที่คุณดาวน์โหลดในขั้นตอนที่ 1 และคลิก OKOK สองครั้งเพื่อปิดทั้งกล่องโต้ตอบ "ติดตั้งส่วนขยาย" และแจ้งเตือนให้รีสตาร์ท GhidraFile | Install Extensions...กรณีการใช้งานหลักคือผ่าน Bindiff อย่างไรก็ตาม Binexport ยังสามารถใช้ในการส่งออกการแยกชิ้นส่วนในรูปแบบที่แตกต่างกัน:
เปิดฐานข้อมูล IDA Pro
เลือก Edit | Plugins BinExport 12
กล่องโต้ตอบต่อไปนี้จะปรากฏขึ้น:

เลือกประเภทของไฟล์ที่จะส่งออก
ปลั๊กอิน Binexport ลงทะเบียนฟังก์ชั่น IDC ด้านล่าง
| ชื่อฟังก์ชัน IDC | ส่งออกไปยัง | ข้อโต้แย้ง |
|---|---|---|
| Binexportbinary | โปรโตคอลบัฟเฟอร์ | ชื่อไฟล์ |
| BinexportText | การถ่ายโอนข้อมูลไฟล์ | ชื่อไฟล์ |
| BinexportStatistics | ไฟล์ข้อความสถิติ | ชื่อไฟล์ |
อีกทางเลือกหนึ่งปลั๊กอินสามารถเรียกใช้จาก IDC โดยเรียกใช้ฟังก์ชันหลักโดยตรง:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}โปรดทราบว่าสิ่งนี้ให้การควบคุมชื่อไฟล์เอาต์พุต Binexport จะใช้ชื่อไฟล์ของฐานข้อมูลที่โหลดในปัจจุบัน (โดยไม่มีส่วนขยาย) และผนวก ".Binexport"
อาร์กิวเมนต์เหมือนกับ IDC (รายการด้านบน)
ตัวอย่างการเรียกใช้หนึ่งในฟังก์ชั่น IDC ที่ลงทะเบียน:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport กำหนดตัวเลือกปลั๊กอินต่อไปนี้ซึ่งสามารถระบุได้ในบรรทัดคำสั่งของ IDA:
| ตัวเลือก | คำอธิบาย |
|---|---|
-OBinExportAutoAction:<ACTION> | เรียกใช้ฟังก์ชัน Binexport IDC และออก |
-OBinExportModule:<PARAM> | อาร์กิวเมนต์สำหรับ BinExportAutoAction |
-OBinExportLogFile:<FILE> | บันทึกข้อความไปยังไฟล์ |
-OBinExportAlsoLogToStdErr:TRUE | หากระบุให้บันทึกไปยังข้อผิดพลาดมาตรฐาน |
-OBinExportX86NoReturnHeuristic:TRUE | เปิดใช้งานฮิวริสติกเฉพาะ X86 เพื่อระบุฟังก์ชั่นที่ไม่กลับมาใช้ใหม่ |
หมายเหตุ: ตัวเลือกเหล่านี้ต้องมาก่อนไฟล์ใด ๆ
มีการรวมเข้ากับ Binary Ninja UI เพียงเล็กน้อยในเวลานี้
Tools | Plugins BinExport สิ่งนี้จะเริ่มกระบวนการส่งออก ไฟล์ .BinExport ถูกวางไว้ถัดจากฐานข้อมูลการวิเคราะห์ในไดเรกทอรีเดียวกัน
File | Import File...Export... จากเมนูบริบท.BinExport จะถูกผนวกเข้าโดยอัตโนมัติ สคริปต์ BinExport.java ghidra สามารถทำงานได้ทั้งในโหมดหัวขาดและ GUI ในโหมด GUI จะมีอยู่ภายใต้หมวดหมู่ BinExport ในตัวจัดการสคริปต์ สำหรับโหมด Headless ไฟล์ BinExport.properties ที่มีเนื้อหาต่อไปนี้ (หรือคล้ายกันขึ้นอยู่กับตัวเลือกที่คุณต้องการใช้) สามารถใช้งานได้:
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
สร้างโครงการนำเข้าและวิเคราะห์ไบนารี:
$ ./analyzeHeadless <project_location> <project_name> -import <file>
เรียกใช้ BinExport.java ซึ่งจะสร้างไฟล์ .BinExport ที่ระบุใน BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
หรือใช้อาร์กิวเมนต์บรรทัดคำสั่งแทน BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
ด้านล่างนี้เป็นคำแนะนำในการสร้างสำหรับปลั๊กอินรหัสดั้งเดิมสำหรับ IDA Pro และ Binary Ninja ในการสร้างส่วนขยายที่ใช้ Java สำหรับ Ghidra โปรดดูคำแนะนำ Binexport สำหรับ Ghidra
มีการพึ่งพาค่อนข้างน้อยที่จะตอบสนอง:
boost_parts )third_party/idasdk )สภาพแวดล้อมการสร้างที่ต้องการคือ Debian 11 ("Bullseye")
สิ่งนี้ควรติดตั้งแพ็คเกจที่จำเป็นทั้งหมด:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialติดตั้ง CMake เวอร์ชันที่เสถียรล่าสุด:
wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.sh
mkdir ${HOME} /cmake
sh cmake-3.25.1-Linux-x86_64.sh --prefix= ${HOME} /cmake --exclude-subdir
export PATH= ${HOME} /cmake/bin: ${PATH}ส่วนต่อไปนี้สันนิษฐานว่าไดเรกทอรีการทำงานปัจจุบันของคุณอยู่ที่รากของที่เก็บโคลน
คลายซิปเนื้อหาของ IDA SDK ลงใน third_party/idasdk คำสั่งที่แสดงมีไว้สำหรับ IDA Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82ด้วยข้อกำหนดเบื้องต้นทั้งหมดให้กำหนดค่าและสร้าง Binexport และเรียกใช้การทดสอบ:
mkdir -p build_linux && cd build_linux
cmake ..
-G Ninja
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip หมายเหตุ: หากคุณไม่ต้องการใช้นินจาเพื่อดำเนินการสร้างจริงให้ละเว้นส่วน -G Ninja
หากต้องการปิดการใช้งาน IDA Pro Build ให้ตั้งค่า -DBINEXPORT_ENABLE_IDAPRO=OFF ในทำนองเดียวกันเพื่อปิดการใช้งาน Binary Ninja Build ให้ตั้ง -DBINEXPORT_ENABLE_BINARYNINJA=OFF
สิ่งนี้จะดาวน์โหลดและสร้าง abseil, googletest, บัฟเฟอร์โปรโตคอลและ Binary Ninja API หากทุกอย่างเป็นไปด้วยดีไดเรกทอรี build_linux/binexport-prefix ควรมีไฟล์สองไฟล์ binexport12_ida.so และ binexport12_ida64.so (สำหรับใช้กับ ida และ ida64 ตามลำดับ) เช่นเดียวกับ binexport12_binaryninja.so
สภาพแวดล้อมการสร้างที่ต้องการคือ MacOS 13 "Ventura" โดยใช้ Xcode 15.1 การใช้ MacOS 12 "Monterey" ควรใช้งานได้เช่นกัน
หลังจากติดตั้งเครื่องมือนักพัฒนาซอฟต์แวร์ตรวจสอบให้แน่ใจว่าได้ติดตั้งเครื่องมือบรรทัดคำสั่งด้วย:
sudo xcode-select --installส่วนต่อไปนี้สันนิษฐานว่าไดเรกทอรีการทำงานปัจจุบันของคุณอยู่ที่รากของที่เก็บโคลน
ดาวน์โหลด CMake เวอร์ชันที่เสถียรล่าสุดจากเว็บไซต์อย่างเป็นทางการและติดตั้งภาพดิสก์:
curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-Darwin-x86_64.dmg
-o $HOME /Downloads/cmake-osx.dmg
hdiutil attach $HOME /Downloads/cmake-osx.dmgณ จุดนี้คุณจะต้องตรวจสอบและยอมรับข้อตกลงใบอนุญาตของ CMake ตอนนี้ติดตั้ง cmake:
sudo cp -Rf /Volumes/cmake-3.25.1-Darwin-x86_64/CMake.app /Applications/
hdiutil detach /Volumes/cmake-3.25.1-Darwin-x86_64
sudo /Applications/CMake.app/Contents/bin/cmake-gui --installคำสั่งสุดท้ายทำให้ CMake พร้อมใช้งานในเส้นทางระบบ
คลายซิปเนื้อหาของ IDA SDK ลงใน third_party/idasdk คำสั่งที่แสดงมีไว้สำหรับ IDA Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82ด้วยข้อกำหนดเบื้องต้นทั้งหมดให้กำหนดค่าและสร้าง Binexport และเรียกใช้การทดสอบ:
mkdir -p build_mac && cd build_mac
cmake ..
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- " -j $( sysctl -n hw.logicalcpu ) "
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripหมายเหตุ: สิ่งนี้จะใช้ cmake มาตรฐาน "makefile generator" คุณสามารถใช้ Xcode หรือ Ninja เป็นเครื่องกำเนิดไฟฟ้าได้เช่นกัน
หากต้องการปิดการใช้งาน IDA Pro Build ให้ตั้งค่า -DBINEXPORT_ENABLE_IDAPRO=OFF ในทำนองเดียวกันเพื่อปิดการใช้งาน Binary Ninja Build ให้ตั้ง -DBINEXPORT_ENABLE_BINARYNINJA=OFF
สิ่งนี้จะดาวน์โหลดและสร้าง abseil, googletest, บัฟเฟอร์โปรโตคอลและ Binary Ninja API binexport12_binaryninja.dylib ทุกอย่างเป็นไปด้วยดีไดเรกทอรี build_mac/binexport-prefix ควรมีไฟล์สองไฟล์ binexport12_ida.dylib และ binexport12_ida64.dylib (สำหรับใช้กับ ida และ ida64 ตามลำดับ)
สภาพแวดล้อมการสร้างที่ต้องการคือ Windows 10 (Intel 64 บิต) โดยใช้คอมไพเลอร์ Visual Studio 2022 และ Windows SDK สำหรับ Windows 10
ดาวน์โหลดและติดตั้ง CMake ที่มีเสถียรภาพล่าสุด (3.25.1 ในขณะที่เขียน) จากหน้าดาวน์โหลด ตรวจสอบให้แน่ใจว่าได้เลือก "เพิ่ม cmake ไปยังเส้นทางระบบสำหรับผู้ใช้ทุกคน"
ดาวน์โหลดและติดตั้ง Git จากหน้าดาวน์โหลด ตรวจสอบให้แน่ใจว่าได้เลือกตัวเลือกต่อไปนี้: * ไดเรกทอรีการติดตั้งควรถูกทิ้งไว้ที่ %ProgramFiles%Gitbingit.exe * "ใช้ git จากพรอมต์คำสั่ง windows" - ให้ยูทิลิตี้การตั้งค่าเพิ่ม Git ไปยังเส้นทางระบบของคุณ * "ใช้หน้าต่างคอนโซลเริ่มต้นของ Windows ' - เพื่อให้สามารถใช้ Git จากพรอมต์คำสั่งปกติ
ส่วนต่อไปนี้ถือว่าพรอมต์คำสั่งแบบเปิดพร้อมไดเรกทอรีการทำงานปัจจุบันอยู่ที่รากของที่เก็บ Binexport ที่โคลน:
git clone https://github.com/google/binexport.git
cd binexport คลายซิปเนื้อหาของ IDA SDK ลงใน third_party/idasdk คำสั่งที่แสดงมีไว้สำหรับ IDA PRO 8.2 โดยสมมติว่า GIT ติดตั้งลงในไดเรกทอรีเริ่มต้นก่อน:
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkด้วยข้อกำหนดเบื้องต้นทั้งหมดให้กำหนดค่าและสร้าง Binexport:
if not exist build_msvc mkdir build_msvc
cd build_msvc
cmake .. ^
-G " Visual Studio 17 2022 " ^
-DCMAKE_BUILD_TYPE=Release ^
" -DCMAKE_INSTALL_PREFIX= %cd% " ^
-DBINEXPORT_ENABLE_IDAPRO=ON ^
-DIdaSdk_ROOT_DIR= %cd% ..third_partyidasdk ^
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- /m /clp:NoSummary;ForceNoAlign /v:minimal
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripหมายเหตุ: สิ่งนี้จะใช้เครื่องกำเนิด "Visual Studio" CMake คุณสามารถใช้เครื่องกำเนิดนินจาได้เช่นกัน
หากต้องการปิดการใช้งาน IDA Pro Build ให้ตั้งค่า -DBINEXPORT_ENABLE_IDAPRO=OFF ในทำนองเดียวกันเพื่อปิดการใช้งาน Binary Ninja Build ให้ตั้ง -DBINEXPORT_ENABLE_BINARYNINJA=OFF
สิ่งนี้จะดาวน์โหลดและสร้าง abseil, googletest, บัฟเฟอร์โปรโตคอลและ Binary Ninja API ถ้าทุกอย่างเป็นไปด้วยดีไดเรกทอรี build_msvc/binexport-prefix ควรมีไฟล์สองไฟล์ binexport12_ida.dll และ binexport12_ida64.dll (สำหรับใช้กับ ida.exe และ ida64.exe ตามลำดับ) เช่นเดียวกับ binexport12_binaryninja.dll