Accesso alla stringa di chiamata dell'istruzione CALLOTHER Pcode tramite API Java?

Oct 05 2020

Esiste un modo per accedere alla stringa di chiamata di un'istruzione CALLOTHER Pcode durante l'iterazione sul Pcode in Java? L'elenco seguente mostra un esempio di cosa intendo:

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

In questo esempio, vorrei ottenere la stringa "ReverseBitOrder".
Sfortunatamente, non c'è alcun suggerimento nelle informazioni sull'istruzione ad eccezione di questo oggetto di input:

const:0x3c

Che non si traduce nella stringa data e non posso nemmeno fare clic sulla stringa per trovare una posizione in memoria. Ho anche esaminato i documenti API di Pcode, istruzioni ecc., Ma non ho trovato nulla di utile.

Risposte

1 mumbel Oct 05 2020 at 23:04

C'è un ghidra_script che la corrente fa questo, vedi https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

fondamentalmente:

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