Java API aracılığıyla CALLOTHER Pcode Talimatının Çağrı Dizisine Erişmek

Oct 05 2020

Java'da Pcode üzerinde yineleme yaparken bir CALLOTHER Pcode komutunun çağrı dizesine erişmenin bir yolu var mı? Aşağıdaki liste, ne demek istediğimin bir örneğini göstermektedir:

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

Bu örnekte, "ReverseBitOrder" dizesini almak istiyorum.
Ne yazık ki, bu girdi nesnesi dışında talimat bilgisinde hiçbir ipucu yok:

const:0x3c

Verilen dizgeye çevrilmiyor ve ayrıca bellekte bir konum bulmak için dizeye tıklayamıyorum. Ayrıca Pcode, Instruction vb. API belgelerine de baktım, ancak yararlı bir şey bulamadım.

Yanıtlar

1 mumbel Oct 05 2020 at 23:04

Bunu yapan bir ghidra_script var, bkz. https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/Base/ghidra_scripts/MarkCallOtherPcode.java

temelde:

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