Доступ к строке вызова инструкции CALLOTHER Pcode через Java API?

Oct 05 2020

Есть ли способ получить доступ к строке вызова инструкции CALLOTHER Pcode при повторении Pcode в Java? В листинге ниже показан пример того, что я имею в виду:

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

В этом примере я хотел бы получить строку «ReverseBitOrder».
К сожалению, в инструкции нет подсказки, кроме этого входного объекта:

const:0x3c

Что не переводится в данную строку, и я также не могу щелкнуть строку, чтобы найти место в памяти. Я также просмотрел документы API Pcode, Instruction и т.д., но не нашел ничего полезного.

Ответы

1 mumbel Oct 05 2020 at 23:04

Есть ghidra_script, который это делает, см. https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

в принципе:

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