¿Accediendo a la cadena de llamada de la instrucción CALLOTHER Pcode a través de la API de Java?
¿Hay alguna forma de acceder a la cadena de llamada de una instrucción CALLOTHER Pcode al iterar sobre el Pcode en Java? La siguiente lista muestra un ejemplo de lo que quiero decir:
048
LAB_0001b034 XREF[1]: 0001b024(j)
0001b034 36 7f ff e6 rbit r7,r6
r7 = CALLOTHER "ReverseBitOrder", r6
En este ejemplo, me gustaría obtener la cadena "ReverseBitOrder".
Desafortunadamente, no hay ninguna pista en la información de la instrucción excepto por este objeto de entrada:
const:0x3c
Lo que no se traduce en la cadena dada y tampoco puedo hacer clic en la cadena para encontrar una ubicación en la memoria. También revisé los documentos de API de Pcode, Instruction, etc., pero no encontré nada útil.
Respuestas
Hay un ghidra_script que actual hace esto, vea https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java
básicamente:
op = getInstructionAt(toAddr(0x1b034)).getPcode()[0]
currentProgram.getLanguage().getUserDefinedOpName(op.getInput(0).getOffset()))