นี่คือการบูรณาการของ decompiler ghidra และ disassembler เลื่อนสำหรับ Rizin มันขึ้นอยู่กับส่วน decompiler ของ Ghidra ซึ่งเขียนไว้ใน C ++ ทั้งหมดดังนั้น Ghidra จึงไม่จำเป็นเลยและปลั๊กอินสามารถสร้างตัวเองได้ โครงการนี้ถูกนำเสนอในขั้นต้นสำหรับ radare2 ที่ R2CON 2019 ซึ่งเป็นส่วนหนึ่งของ Cutter Talk: https://youtu.be/ehtmiezr7l8?t=950
Usage: pdg # Native Ghidra decompiler plugin
| pdg # Decompile current function with the Ghidra decompiler
| pdgd # Dump the debug XML Dump
| pdgx # Dump the XML of the current decompiled function
| pdgj # Dump the current decompiled function as JSON
| pdgo # Decompile current function side by side with offsets
| pdgs # Display loaded Sleigh Languages
| pdg* # Decompiled code is returned to rizin as comment
config vars ต่อไปนี้ (สำหรับคำสั่ง e ) สามารถใช้เพื่อปรับพฤติกรรมของ RZ-GHIDRA:
ghidra.cmt.cpp: C++ comment style
ghidra.cmt.indent: Comment indent
ghidra.indent: Indent increment
ghidra.lang: Custom Sleigh ID to override auto-detection (e.g. x86:LE:32:default)
ghidra.linelen: Max line length
ghidra.nl.brace: Newline before opening '{'
ghidra.nl.else: Newline before else
ghidra.sleighhome: SLEIGHHOME
ที่นี่ ghidra.sleighhome ต้องชี้ไปที่ไดเรกทอรีที่มี *.sla , *.lspec , ... ไฟล์สำหรับสถาปัตยกรรมที่ควรได้รับการสนับสนุนจาก decompiler อย่างไรก็ตามนี่คือการตั้งค่าโดยอัตโนมัติเมื่อใช้แพ็คเกจ RZ-PM หรือการติดตั้งดังที่แสดงด้านล่าง
ขั้นแรกตรวจสอบให้แน่ใจว่า submodule ที่อยู่ในที่เก็บนี้จะถูกดึงและทันสมัย:
git submodule init
git submodule update
จากนั้นปลั๊กอิน Rizin สามารถสร้างและติดตั้งได้ดังนี้:
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
make
make install
ที่นี่ตั้ง CMAKE_INSTALL_PREFIX เป็นตำแหน่งที่ Rizin สามารถโหลดปลั๊กอินได้ ขั้นตอนการติดตั้งเป็นสิ่งจำเป็นสำหรับปลั๊กอินในการทำงานเนื่องจากมีการติดตั้งไฟล์เลื่อนที่จำเป็น หากคุณใช้ Rizin จาก Git ให้ตั้ง CMAKE_PREFIX_PATH ไปยังไดเรกทอรีการติดตั้ง Rizin
ในการสร้างปลั๊กอินคัตเตอร์คุณต้องติดตั้งเครื่องตัดจากแหล่งที่มาภายใต้คำนำหน้าบางส่วนซึ่งสามารถระบุได้ด้วย -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_PREFIX_PATH=<path>
/my/path/rz-ghidra> mkdir build && cd build
/my/path/rz-ghidra/build> cmake -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_PREFIX_PATH=/path/to/cutter/prefix -DCMAKE_INSTALL_PREFIX=~/.local ..
/my/path/rz-ghidra/build> make && make install
โดยค่าเริ่มต้นปลั๊กอินเครื่องตัดจะถูกติดตั้งในเส้นทางที่เลือกโดยอัตโนมัติในไดเรกทอรีโฮมสอร์ของผู้ใช้ปัจจุบัน เส้นทางนี้สามารถเอาชนะได้ด้วย -DCUTTER_INSTALL_PLUGDIR
Rizin มีการพัฒนาอย่างรวดเร็ว C API ดังนั้นจึงจำเป็นต้องชัดเจนเกี่ยวกับรุ่นของ RZ-GHIDRA ที่เข้ากันได้กับรุ่นใดของ Rizin:
เมื่อใช้ Rizin และ Rz-Ghidra จาก Git:
dev ติดตามไปตามสาขา RIZIN devstable ตามไปตามสาขา Rizin stable เกี่ยวกับการเปิดตัว RZ-GHIDRA มักจะถูกปล่อยออกมาพร้อมกับ Rizin และมักจะใช้หมายเลขเวอร์ชันเดียวกัน (แต่ไม่รับประกันไม่ได้ขึ้นอยู่กับตัวเลขเหล่านี้!) นอกจากนี้พร้อมกับ Rizin ทุกคนปล่อยแท็กเช่น rz-0.1.2 ถูกสร้างขึ้นบน RZ-Ghidra ซึ่งชี้ไปที่การเปิดตัว RZ-GHIDRA และบ่งชี้ว่ารุ่นนี้เข้ากันได้กับรุ่น Rizin ที่ระบุ แท็กเหล่านี้สามารถใช้งานได้โดยผู้ดูแลการกระจายเพื่อค้นหาวิธีการตั้งค่าการพึ่งพา
โปรดทราบว่าปลั๊กอินนี้มีอยู่ภายใต้ LGPLV3 ซึ่งเข้มงวดกว่าใบอนุญาตของ Ghidra!
โปรแกรมนี้เป็นซอฟต์แวร์ฟรี: คุณสามารถแจกจ่ายใหม่และ/หรือแก้ไขภายใต้ข้อกำหนดของใบอนุญาตสาธารณะ GNU Lesser ทั่วไปที่เผยแพร่โดย Free Software Foundation ไม่ว่าจะเป็นเวอร์ชัน 3 ของใบอนุญาตหรือ (ตามตัวเลือกของคุณ)
โปรแกรมนี้มีการแจกจ่ายด้วยความหวังว่าจะมีประโยชน์ แต่ไม่มีการรับประกันใด ๆ โดยไม่มีการรับประกันโดยนัยเกี่ยวกับความสามารถในการค้าหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูใบอนุญาตสาธารณะ GNU Lesser ทั่วไปสำหรับรายละเอียดเพิ่มเติม
คุณควรได้รับสำเนาใบอนุญาตสาธารณะ GNU Lesser ทั่วไปพร้อมกับโปรแกรมนี้ ถ้าไม่ดู https://www.gnu.org/licenses/