Ghidra Decompiler Analysis Engine
Public Member Functions | Static Public Member Functions | Friends | List of all members
InjectPayloadSleigh Class Reference
Inheritance diagram for InjectPayloadSleigh:
Inheritance graph
[legend]
Collaboration diagram for InjectPayloadSleigh:
Collaboration graph
[legend]

Public Member Functions

 InjectPayloadSleigh (const string &src, const string &nm, int4 tp)
 
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)
 
virtual string getSource (void) const
 Return a string describing the source of the injection (.cspec, prototype model, etc.)
 

Static Public Member Functions

static void checkParameterRestrictions (InjectContextSleigh &con, const vector< InjectParameter > &inputlist, const vector< InjectParameter > &output, const string &source)
 
static void setupParameters (InjectContextSleigh &con, ParserWalkerChange &walker, const vector< InjectParameter > &inputlist, const vector< InjectParameter > &output, const string &source)
 

Friends

class PcodeInjectLibrarySleigh
 

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< InjectParameterinputlist
 List of input parameters to this payload.
 
vector< InjectParameteroutput
 List of output parameters.
 

Member Function Documentation

◆ inject()

void InjectPayloadSleigh::inject ( InjectContext context,
PcodeEmit emit 
) const
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.

Parameters
contextis the provided InjectConject object
emitis the provovided PcodeEmit object

Implements InjectPayload.

◆ restoreXml()

void InjectPayloadSleigh::restoreXml ( const Element el)
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.

Parameters
elis the XML element

Reimplemented from InjectPayload.

Reimplemented in InjectPayloadCallother, and InjectPayloadCallfixup.


The documentation for this class was generated from the following files: