Accéder à la chaîne d'appel de l'instruction Pcode CALLOTHER via l'API Java?

Oct 05 2020

Existe-t-il un moyen d'accéder à la chaîne d'appel d'une instruction CALLOTHER Pcode lors d'une itération sur le Pcode en Java? La liste ci-dessous montre un exemple de ce que je veux dire:

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

Dans cet exemple, j'aimerais obtenir la chaîne "ReverseBitOrder".
Malheureusement, il n'y a aucun indice dans les informations d'instruction à l'exception de cet objet d'entrée:

const:0x3c

Ce qui ne se traduit pas dans la chaîne donnée et je ne peux pas non plus cliquer sur la chaîne pour trouver un emplacement en mémoire. J'ai également parcouru les documents API de Pcode, Instruction, etc., mais je n'ai rien trouvé d'utile.

Réponses

1 mumbel Oct 05 2020 at 23:04

Il y a un ghidra_script qui le fait actuellement, voir https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

fondamentalement:

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