Ghidra Decompiler Analysis Engine
|
A p-code script that uses a Ghidra client to generate the p-code ops. More...
#include <inject_ghidra.hh>
Public Member Functions | |
ExecutablePcodeGhidra (Architecture *g, const string &src, const string &nm) | |
Constructor. | |
virtual void | inject (InjectContext &context, PcodeEmit &emit) const |
virtual void | restoreXml (const Element *el) |
Restore this payload from an XML stream. More... | |
virtual void | printTemplate (ostream &s) const |
Print the p-code ops of the injection to a stream (for debugging) | |
Public Member Functions inherited from ExecutablePcode | |
ExecutablePcode (Architecture *g, const string &src, const string &nm) | |
Constructor. More... | |
virtual string | getSource (void) const |
Return a string describing the source of the injection (.cspec, prototype model, etc.) | |
uintb | evaluate (const vector< uintb > &input) |
Evaluate the snippet on the given inputs. More... | |
Additional Inherited Members | |
Public Types inherited from InjectPayload | |
enum | { CALLFIXUP_TYPE = 1, CALLOTHERFIXUP_TYPE = 2, CALLMECHANISM_TYPE = 3, EXECUTABLEPCODE_TYPE = 4 } |
Protected Member Functions inherited from InjectPayload | |
void | orderParameters (void) |
Assign an index to parameters. More... | |
Static Protected Member Functions inherited from InjectPayload | |
static void | readParameter (const Element *el, string &name, uint4 &size) |
Read in an <input> or <output> XML tag describing an injection parameter. More... | |
Protected Attributes inherited from InjectPayload | |
string | name |
Formal name of the payload. | |
int4 | type |
Type of this payload: CALLFIXUP_TYPE, CALLOTHERFIXUP_TYPE, etc. | |
bool | dynamic |
True if the injection is generated dynamically. | |
bool | incidentalCopy |
True if injected COPYs are considered incidental. | |
int4 | paramshift |
Number of parameters shifted in the original call. | |
vector< InjectParameter > | inputlist |
List of input parameters to this payload. | |
vector< InjectParameter > | output |
List of output parameters. | |
A p-code script that uses a Ghidra client to generate the p-code ops.
The <body> section of any p-code script encountered in .cspec or .pspec files is ignored. Instead the emulator is initialized by fetching compiled p-code from the Ghidra client.
|
virtual |
Perform the injection of this payload into data-flow.
P-code operations representing this payload are copied into the controlling analysis context. The provided PcodeEmit object dictates exactly where the PcodeOp and Varnode objects are inserted and to what container. An InjectContext object specifies how placeholder elements become concrete Varnodes in the appropriate context.
context | is the provided InjectConject object |
emit | is the provovided PcodeEmit object |
Implements InjectPayload.
|
virtual |
Restore this payload from an XML stream.
The base class version of this method restores from a <pcode> tag. Derived classes may restore from a parent tag and then invoke the base class method.
el | is the XML element |
Reimplemented from InjectPayload.