Zugriff auf die Aufrufzeichenfolge der CALLOTHER-Pcode-Anweisung über die Java-API?
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
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()))