การเข้าถึง Call String ของ CALLOTHER Pcode Instruction ผ่าน Java API?

Oct 05 2020

มีวิธีเข้าถึงสตริงการโทรของคำสั่ง CALLOTHER Pcode เมื่อทำซ้ำผ่าน Pcode ใน Java หรือไม่? รายการด้านล่างแสดงตัวอย่างของสิ่งที่ฉันหมายถึง:

048
                             LAB_0001b034                                    XREF[1]:     0001b024(j)  
        0001b034 36 7f ff e6     rbit       r7,r6
                                                      r7 = CALLOTHER "ReverseBitOrder", r6

ในตัวอย่างนี้ฉันต้องการรับสตริง "ReverseBitOrder"
น่าเสียดายที่ไม่มีคำแนะนำในข้อมูลคำสั่งยกเว้นสำหรับวัตถุอินพุตนี้:

const:0x3c

ซึ่งไม่ได้แปลเป็นสตริงที่กำหนดและฉันไม่สามารถคลิกที่สตริงเพื่อค้นหาตำแหน่งในหน่วยความจำ ฉันยังดูเอกสาร API ของ Pcode คำสั่งและอื่น ๆ แต่ไม่พบสิ่งใดที่เป็นประโยชน์

คำตอบ

1 mumbel Oct 05 2020 at 23:04

มี ghidra_script ที่ปัจจุบันทำสิ่งนี้ให้ดู https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

โดยพื้นฐาน:

op = getInstructionAt(toAddr(0x1b034)).getPcode()[0]
currentProgram.getLanguage().getUserDefinedOpName(op.getInput(0).getOffset()))