Acessando a string de chamada da instrução CALLOTHER Pcode via API Java?

Oct 05 2020

Existe uma maneira de acessar a string de chamada de uma instrução CALLOTHER Pcode ao iterar sobre o Pcode em Java? A lista abaixo mostra um exemplo do que quero dizer:

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

Neste exemplo, gostaria de obter a string "ReverseBitOrder".
Infelizmente, não há nenhuma dica nas informações da instrução, exceto para este objeto de entrada:

const:0x3c

O que não se traduz na string dada e também não consigo clicar na string para encontrar um local na memória. Também olhei os documentos da API de Pcode, Instruction etc., mas não encontrei nada útil.

Respostas

1 mumbel Oct 05 2020 at 23:04

Existe um ghidra_script que o atual faz isso, veja https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

basicamente:

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