Zugriff auf die Aufrufzeichenfolge der CALLOTHER-Pcode-Anweisung über die Java-API?

Oct 05 2020

Gibt es eine Möglichkeit, auf die Aufrufzeichenfolge einer CALLOTHER-Pcode-Anweisung zuzugreifen, wenn in Java über den Pcode iteriert wird? Die folgende Auflistung zeigt ein Beispiel für das, was ich meine:

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

In diesem Beispiel möchte ich die Zeichenfolge "ReverseBitOrder" erhalten.
Leider gibt es außer diesem Eingabeobjekt keinen Hinweis in den Anweisungsinformationen:

const:0x3c

Was nicht in die angegebene Zeichenfolge übersetzt wird und ich auch nicht auf die Zeichenfolge klicken kann, um einen Speicherort im Speicher zu finden. Ich habe auch die API-Dokumente von Pcode, Instruction usw. durchgesehen, aber nichts Nützliches gefunden.

Antworten

1 mumbel Oct 05 2020 at 23:04

Es gibt ein ghidra_script, das aktuell dies tut, siehe https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

Grundsätzlich:

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