|
My Project
|
A p-code injection library that uses a Ghidra client to generate/compile the injection p-code. More...
#include <inject_ghidra.hh>


Public Member Functions | |
| PcodeInjectLibraryGhidra (ArchitectureGhidra *ghi) | |
| Constructor. | |
| virtual int4 | manualCallFixup (const string &name, const string &snippet) |
| Manually add a call-fixup payload given a compilable snippet of p-code source. More... | |
| virtual int4 | manualCallOtherFixup (const string &name, const string &outname, const vector< string > &inname, const string &snippet) |
| Manually add a callother-fixup payload given a compilable snippet of p-code source. More... | |
| virtual InjectContext & | getCachedContext (void) |
| Retrieve a reusable context object for this library. More... | |
| virtual const vector< OpBehavior * > & | getBehaviors (void) |
| Get the array of op-code behaviors for initializing and emulator. More... | |
Public Member Functions inherited from PcodeInjectLibrary | |
| PcodeInjectLibrary (Architecture *g, uintb tmpbase) | |
| Constructor. | |
| virtual | ~PcodeInjectLibrary (void) |
| Destructor. | |
| uintb | getUniqueBase (void) const |
| Get the (current) offset for building temporary registers. | |
| int4 | getPayloadId (int4 type, const string &nm) const |
| Map name and type to the payload id. More... | |
| InjectPayload * | getPayload (int4 id) const |
| Get the InjectPayload by id. | |
| string | getCallFixupName (int4 injectid) const |
| Get the call-fixup name associated with an id. More... | |
| string | getCallOtherTarget (int4 injectid) const |
| Get the callother-fixup name associated with an id. More... | |
| string | getCallMechanismName (int4 injectid) const |
| Get the call mechanism name associated with an id. More... | |
| int4 | restoreXmlInject (const string &src, const string &nm, int4 tp, const Element *el) |
| Read in and register an injection payload from an XML stream. More... | |
| virtual void | restoreDebug (const Element *el) |
| A method for reading in p-code generated externally for use in debugging. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from PcodeInjectLibrary | |
| void | registerCallFixup (const string &fixupName, int4 injectid) |
| Map a call-fixup name to a payload id. More... | |
| void | registerCallOtherFixup (const string &fixupName, int4 injectid) |
| Map a callother-fixup name to a payload id. More... | |
| void | registerCallMechanism (const string &fixupName, int4 injectid) |
| Map a call mechanism name to a payload id. More... | |
| void | registerExeScript (const string &scriptName, int4 injectid) |
| Map a p-code script name to a payload id. More... | |
Protected Attributes inherited from PcodeInjectLibrary | |
| Architecture * | glb |
| The Architecture to which the injection payloads apply. | |
| uintb | tempbase |
| Offset within unique space for allocating temporaries within a payload. | |
| vector< InjectPayload * > | injection |
| Registered injections. | |
| map< string, int4 > | callFixupMap |
| Map of registered call-fixup names to injection id. | |
| map< string, int4 > | callOtherFixupMap |
| Map of registered callother-fixup names to injection id. | |
| map< string, int4 > | callMechFixupMap |
| Map of registered mechanism names to injection id. | |
| map< string, int4 > | scriptMap |
| Map of registered script names to ExecutablePcode id. | |
| vector< string > | callFixupNames |
| Map from injectid to call-fixup name. | |
| vector< string > | callOtherTarget |
| Map from injectid to callother-fixup target-op name. | |
| vector< string > | callMechTarget |
| Map from injectid to call-mech name. | |
| vector< string > | scriptNames |
| Map from injectid to script name. | |
A p-code injection library that uses a Ghidra client to generate/compile the injection p-code.
The InjectPayload objects produced by this library are just placeholders (see InjectPayloadGhidra). At the time of injection, final p-code is generated by the Ghidra client.
|
virtual |
Get the array of op-code behaviors for initializing and emulator.
Behaviors are pulled from the underlying architecture in order to initialize the Emulate object which services the p-code script payloads.
Implements PcodeInjectLibrary.
|
inlinevirtual |
Retrieve a reusable context object for this library.
The object returned by this method gets passed to the payload inject() method. The clear() method must be called between uses.
Implements PcodeInjectLibrary.
|
virtual |
Manually add a call-fixup payload given a compilable snippet of p-code source.
The snippet is compiled immediately to produce the payload.
| name | is the formal name of the new payload |
| snippetstring | is the compilable snippet of p-code source |
Implements PcodeInjectLibrary.
|
virtual |
Manually add a callother-fixup payload given a compilable snippet of p-code source.
The snippet is compiled immediately to produce the payload. Symbol names for input and output parameters must be provided to the compiler.
| name | is the formal name of the new payload |
| outname | is the name of the output symbol |
| inname | is the ordered list of input symbol names |
| snippet | is the compilable snippet of p-code source |
Implements PcodeInjectLibrary.
1.8.13