Mengakses String Panggilan Instruksi Pcode CALLOTHER melalui Java API?
Apakah ada cara untuk mengakses string panggilan dari instruksi Pcode CALLOTHER saat melakukan iterasi melalui Pcode di Java? Daftar di bawah ini menunjukkan contoh dari apa yang saya maksud:
048
LAB_0001b034 XREF[1]: 0001b024(j)
0001b034 36 7f ff e6 rbit r7,r6
r7 = CALLOTHER "ReverseBitOrder", r6
Dalam contoh ini, saya ingin mendapatkan string "ReverseBitOrder".
Sayangnya, tidak ada petunjuk dalam info instruksi kecuali untuk objek input ini:
const:0x3c
Yang tidak diterjemahkan ke dalam string yang diberikan dan saya juga tidak dapat mengklik string tersebut untuk menemukan lokasi di memori. Saya juga melihat-lihat dokumen API Pcode, Instruksi, dll., Tetapi tidak menemukan sesuatu yang berguna.
Jawaban
Ada ghidra_script yang saat ini melakukan ini, lihat https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java
pada dasarnya:
op = getInstructionAt(toAddr(0x1b034)).getPcode()[0]
currentProgram.getLanguage().getUserDefinedOpName(op.getInput(0).getOffset()))