Truy cập chuỗi lệnh gọi của lệnh mã CALLOTHER qua Java API?

Oct 05 2020

Có cách nào để truy cập vào chuỗi lệnh gọi của lệnh CALLOTHER Pcode khi lặp qua Pcode trong Java không? Danh sách dưới đây cho thấy một ví dụ về ý tôi:

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

Trong ví dụ này, tôi muốn lấy chuỗi "ReverseBitOrder".
Thật không may, không có gợi ý nào trong thông tin hướng dẫn ngoại trừ đối tượng đầu vào này:

const:0x3c

Điều đó không dịch sang chuỗi đã cho và tôi cũng không thể nhấp vào chuỗi để tìm vị trí trong bộ nhớ. Tôi cũng đã xem qua các tài liệu API về Pcode, Instruction, v.v., nhưng không tìm thấy bất kỳ điều gì hữu ích.

Trả lời

1 mumbel Oct 05 2020 at 23:04

Có một ghidra_script hiện tại làm điều này, hãy xem https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

về cơ bản:

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