libTriton version 1.0 build 1588
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
triton::Context Class Reference

This is the main Triton Context class. More...

#include <context.hpp>

Public Member Functions

TRITON_EXPORT Context ()
 Constructor of the Context. More...
 
TRITON_EXPORT Context (triton::arch::architecture_e arch)
 Constructor of the Context. More...
 
TRITON_EXPORT ~Context ()
 Destructor of the Context. More...
 
TRITON_EXPORT bool isArchitectureValid (void) const
 [Architecture api] - Returns true if the architecture is valid. More...
 
TRITON_EXPORT triton::arch::architecture_e getArchitecture (void) const
 [architecture api] - Returns the architecture as triton::arch::architecture_e. More...
 
TRITON_EXPORT triton::arch::endianness_e getEndianness (void) const
 [architecture api] - Returns the endianness as triton::arch::endianness_e. More...
 
TRITON_EXPORT triton::arch::CpuInterfacegetCpuInstance (void)
 [architecture api] - Returns the instance of the current CPU used. More...
 
TRITON_EXPORT void setArchitecture (triton::arch::architecture_e arch)
 [architecture api] - Initializes an architecture. More...
 
TRITON_EXPORT void clearArchitecture (void)
 [architecture api] - Clears the architecture states (registers and memory). More...
 
TRITON_EXPORT bool isFlag (triton::arch::register_e regId) const
 [architecture api] - Returns true if the register id is a flag. More...
 
TRITON_EXPORT bool isFlag (const triton::arch::Register &reg) const
 [architecture api] - Returns true if the register id is a flag. More...
 
TRITON_EXPORT bool isRegister (triton::arch::register_e regId) const
 [architecture api] - Returns true if the regId is a register. More...
 
TRITON_EXPORT bool isRegister (const triton::arch::Register &reg) const
 [architecture api] - Returns true if the regId is a register. More...
 
TRITON_EXPORT const triton::arch::RegistergetRegister (triton::arch::register_e id) const
 [architecture api] - Returns Register from regId. More...
 
TRITON_EXPORT const triton::arch::RegistergetRegister (const std::string &name) const
 [architecture api] - Returns Register from its name. More...
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (const triton::arch::Register &reg) const
 [architecture api] - Returns parent Register from a register. More...
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (triton::arch::register_e id) const
 [architecture api] - Returns parent Register from regId. More...
 
TRITON_EXPORT bool isRegisterValid (triton::arch::register_e regId) const
 [architecture api] - Returns true if the regId is a register or a flag. More...
 
TRITON_EXPORT bool isRegisterValid (const triton::arch::Register &reg) const
 [architecture api] - Returns true if the regId is a register or a flag. More...
 
TRITON_EXPORT bool isThumb (void) const
 [architecture api] - Returns true if the execution mode is Thumb. Only useful for Arm32. More...
 
TRITON_EXPORT void setThumb (bool state)
 [architecture api] - Sets CPU state to Thumb mode. More...
 
TRITON_EXPORT triton::uint32 getGprBitSize (void) const
 [architecture api] - Returns the bit in byte of the General Purpose Registers. More...
 
TRITON_EXPORT triton::uint32 getGprSize (void) const
 [architecture api] - Returns the size in byte of the General Purpose Registers. More...
 
TRITON_EXPORT triton::uint32 getNumberOfRegisters (void) const
 [architecture api] - Returns the number of registers according to the CPU architecture. More...
 
TRITON_EXPORT const triton::arch::Instruction getNopInstruction (void) const
 Returns a NOP instruction according to the architecture. More...
 
TRITON_EXPORT const std::unordered_map< triton::arch::register_e, const triton::arch::Register > & getAllRegisters (void) const
 [architecture api] - Returns all registers. More...
 
TRITON_EXPORT std::set< const triton::arch::Register * > getParentRegisters (void) const
 [architecture api] - Returns all parent registers. More...
 
TRITON_EXPORT triton::uint8 getConcreteMemoryValue (triton::uint64 addr, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of a memory cell. More...
 
TRITON_EXPORT triton::uint512 getConcreteMemoryValue (const triton::arch::MemoryAccess &mem, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of memory cells. More...
 
TRITON_EXPORT std::vector< triton::uint8getConcreteMemoryAreaValue (triton::uint64 baseAddr, triton::usize size, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of a memory area. More...
 
TRITON_EXPORT triton::uint512 getConcreteRegisterValue (const triton::arch::Register &reg, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of a register. More...
 
TRITON_EXPORT void setConcreteMemoryValue (triton::uint64 addr, triton::uint8 value, bool execCallbacks=true)
 [architecture api] - Sets the concrete value of a memory cell. More...
 
TRITON_EXPORT void setConcreteMemoryValue (const triton::arch::MemoryAccess &mem, const triton::uint512 &value, bool execCallbacks=true)
 [architecture api] - Sets the concrete value of memory cells. More...
 
TRITON_EXPORT void setConcreteMemoryAreaValue (triton::uint64 baseAddr, const std::vector< triton::uint8 > &values, bool execCallbacks=true)
 [architecture api] - Sets the concrete value of a memory area. More...
 
TRITON_EXPORT void setConcreteMemoryAreaValue (triton::uint64 baseAddr, const void *area, triton::usize size, bool execCallbacks=true)
 [architecture api] - Sets the concrete value of a memory area. More...
 
TRITON_EXPORT void setConcreteRegisterValue (const triton::arch::Register &reg, const triton::uint512 &value, bool execCallbacks=true)
 [architecture api] - Sets the concrete value of a register. More...
 
TRITON_EXPORT void setConcreteState (triton::arch::Architecture &other)
 [architecture api] - Defines a concrete state. More...
 
TRITON_EXPORT bool isConcreteMemoryValueDefined (const triton::arch::MemoryAccess &mem) const
 Returns true if memory cells have a defined concrete value. More...
 
TRITON_EXPORT bool isConcreteMemoryValueDefined (triton::uint64 baseAddr, triton::usize size=1) const
 Returns true if memory cells have a defined concrete value. More...
 
TRITON_EXPORT void clearConcreteMemoryValue (const triton::arch::MemoryAccess &mem)
 Clears concrete values assigned to the memory cells. More...
 
TRITON_EXPORT void clearConcreteMemoryValue (triton::uint64 baseAddr, triton::usize size=1)
 Clears concrete values assigned to the memory cells. More...
 
TRITON_EXPORT void disassembly (triton::arch::Instruction &inst) const
 [architecture api] - Disassembles the instruction and setup operands. More...
 
TRITON_EXPORT void disassembly (triton::arch::BasicBlock &block, triton::uint64 addr=0) const
 [architecture api] - Disassembles a block of instructions. You must define an architecture before. More...
 
TRITON_EXPORT std::vector< triton::arch::Instructiondisassembly (triton::uint64 addr, triton::usize count) const
 [architecture api] - Disassembles a concrete memory area and returns a list of at most count disassembled instructions. More...
 
TRITON_EXPORT triton::arch::BasicBlock disassembly (triton::uint64 addr) const
 [architecture api] - Disassembles a concrete memory area from addr to control flow instruction and returns a BasicBlock. More...
 
TRITON_EXPORT triton::arch::exception_e processing (triton::arch::Instruction &inst)
 [proccesing api] - Processes an instruction and updates engines according to the instruction semantics. Returns triton::arch::NO_FAULT if succeed. More...
 
TRITON_EXPORT triton::arch::exception_e processing (triton::arch::BasicBlock &block, triton::uint64 addr=0)
 [proccesing api] - Processes a block of instructions and updates engines according to instructions semantics. Returns triton::arch::NO_FAULT if succeed. More...
 
TRITON_EXPORT void initEngines (void)
 [proccesing api] - Initializes everything. More...
 
TRITON_EXPORT void removeEngines (void)
 [proccesing api] - Removes everything. More...
 
TRITON_EXPORT void reset (void)
 [proccesing api] - Resets everything. More...
 
TRITON_EXPORT triton::arch::exception_e buildSemantics (triton::arch::Instruction &inst)
 [IR builder api] - Builds the instruction semantics. Returns triton::arch::NO_FAULT if succeed. More...
 
TRITON_EXPORT triton::arch::exception_e buildSemantics (triton::arch::BasicBlock &block)
 [IR builder api] - Builds the instructions semantics of a block. Returns triton::arch::NO_FAULT if succeed. More...
 
TRITON_EXPORT triton::ast::SharedAstContext getAstContext (void)
 [IR builder api] - Returns the AST context. Used as AST builder. More...
 
TRITON_EXPORT triton::ast::representations::mode_e getAstRepresentationMode (void) const
 [AST representation api] - Returns the AST representation as triton::ast::representation_e. More...
 
TRITON_EXPORT void setAstRepresentationMode (triton::ast::representations::mode_e mode)
 [AST representation api] - Sets the AST representation. More...
 
template<typename T >
void addCallback (triton::callbacks::callback_e kind, T cb)
 [callbacks api] - Adds a callback. More...
 
template<typename T >
void removeCallback (triton::callbacks::callback_e kind, T cb)
 [callbacks api] - Removes a callback. More...
 
TRITON_EXPORT void clearCallbacks (void)
 [callbacks api] - Clears recorded callbacks. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode processCallbacks (triton::callbacks::callback_e kind, triton::ast::SharedAbstractNode node)
 [callbacks api] - Processes callbacks according to the kind and the C++ polymorphism. More...
 
TRITON_EXPORT void processCallbacks (triton::callbacks::callback_e kind, const triton::arch::MemoryAccess &mem)
 [callbacks api] - Processes callbacks according to the kind and the C++ polymorphism. More...
 
TRITON_EXPORT void processCallbacks (triton::callbacks::callback_e kind, const triton::arch::Register &reg)
 [callbacks api] - Processes callbacks according to the kind and the C++ polymorphism. More...
 
TRITON_EXPORT void setMode (triton::modes::mode_e mode, bool flag)
 [modes api] - Enables or disables a specific mode. More...
 
TRITON_EXPORT bool isModeEnabled (triton::modes::mode_e mode) const
 [modes api] - Returns true if the mode is enabled. More...
 
TRITON_EXPORT void clearModes (void)
 [modes api] - Clears recorded modes. More...
 
TRITON_EXPORT triton::engines::symbolic::SymbolicEnginegetSymbolicEngine (void)
 [symbolic api] - Returns the instance of the symbolic engine. More...
 
TRITON_EXPORT std::unordered_map< triton::arch::register_e, triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicRegisters (void) const
 [symbolic api] - Returns the map of symbolic registers defined. More...
 
TRITON_EXPORT std::unordered_map< triton::uint64, triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicMemory (void) const
 [symbolic api] - Returns the map (<Addr : SymExpr>) of symbolic memory defined. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression getSymbolicMemory (triton::uint64 addr) const
 [symbolic api] - Returns the symbolic expression assigned to the memory address. More...
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicRegister (const triton::arch::Register &reg) const
 [symbolic api] - Returns the symbolic expression assigned to the parent register. More...
 
TRITON_EXPORT triton::uint8 getSymbolicMemoryValue (triton::uint64 address)
 [symbolic api] - Returns the symbolic memory value. More...
 
TRITON_EXPORT triton::uint512 getSymbolicMemoryValue (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns the symbolic memory value. More...
 
TRITON_EXPORT std::vector< triton::uint8getSymbolicMemoryAreaValue (triton::uint64 baseAddr, triton::usize size)
 [symbolic api] - Returns the symbolic values of a memory area. More...
 
TRITON_EXPORT triton::uint512 getSymbolicRegisterValue (const triton::arch::Register &reg)
 [symbolic api] - Returns the symbolic register value. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getOperandAst (const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns the AST corresponding to the operand. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getOperandAst (triton::arch::Instruction &inst, const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns the AST corresponding to the operand. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getImmediateAst (const triton::arch::Immediate &imm)
 [symbolic api] - Returns the AST corresponding to the immediate. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getImmediateAst (triton::arch::Instruction &inst, const triton::arch::Immediate &imm)
 [symbolic api] - Returns the AST corresponding to the immediate and defines the immediate as input of the instruction.. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getMemoryAst (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns the AST corresponding to the memory. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getMemoryAst (triton::arch::Instruction &inst, const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns the AST corresponding to the memory and defines the memory cell as input of the instruction. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getRegisterAst (const triton::arch::Register &reg)
 [symbolic api] - Returns the AST corresponding to the register. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getRegisterAst (triton::arch::Instruction &inst, const triton::arch::Register &reg)
 [symbolic api] - Returns the AST corresponding to the register and defines the register as input of the instruction. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression newSymbolicExpression (const triton::ast::SharedAbstractNode &node, const std::string &comment="")
 [symbolic api] - Returns a new symbolic expression. Note that if there are simplification passes recorded, simplification will be applied. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable newSymbolicVariable (triton::uint32 varSize, const std::string &alias="")
 [symbolic api] - Returns a new symbolic variable. More...
 
TRITON_EXPORT void removeSymbolicExpression (const triton::engines::symbolic::SharedSymbolicExpression &expr)
 [symbolic api] - Removes the symbolic expression corresponding to the id. More...
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressioncreateSymbolicExpression (triton::arch::Instruction &inst, const triton::ast::SharedAbstractNode &node, const triton::arch::OperandWrapper &dst, const std::string &comment="")
 [symbolic api] - Returns the new symbolic abstract expression and links this expression to the instruction. More...
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressioncreateSymbolicMemoryExpression (triton::arch::Instruction &inst, const triton::ast::SharedAbstractNode &node, const triton::arch::MemoryAccess &mem, const std::string &comment="")
 [symbolic api] - Returns the new symbolic memory expression and links this expression to the instruction. More...
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressioncreateSymbolicRegisterExpression (triton::arch::Instruction &inst, const triton::ast::SharedAbstractNode &node, const triton::arch::Register &reg, const std::string &comment="")
 [symbolic api] - Returns the new symbolic register expression and links this expression to the instruction. More...
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressioncreateSymbolicVolatileExpression (triton::arch::Instruction &inst, const triton::ast::SharedAbstractNode &node, const std::string &comment="")
 [symbolic api] - Returns the new symbolic volatile expression and links this expression to the instruction. More...
 
TRITON_EXPORT void assignSymbolicExpressionToMemory (const triton::engines::symbolic::SharedSymbolicExpression &se, const triton::arch::MemoryAccess &mem)
 [symbolic api] - Assigns a symbolic expression to a memory. More...
 
TRITON_EXPORT void assignSymbolicExpressionToRegister (const triton::engines::symbolic::SharedSymbolicExpression &se, const triton::arch::Register &reg)
 [symbolic api] - Assigns a symbolic expression to a register. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode simplify (const triton::ast::SharedAbstractNode &node, bool usingSolver=false, bool usingLLVM=false) const
 [symbolic api] - Processes all recorded AST simplifications, uses solver's simplifications if usingSolver is true or LLVM is usingLLVM is true. Returns the simplified AST. More...
 
TRITON_EXPORT triton::arch::BasicBlock simplify (const triton::arch::BasicBlock &block, bool padding=false) const
 [symbolic api] - Processes a dead store elimination simplification on a given basic block. If padding is true, keep addresses aligned and padds with NOP instructions. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression getSymbolicExpression (triton::usize symExprId) const
 [symbolic api] - Returns the symbolic expression corresponding to an id. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable getSymbolicVariable (triton::usize symVarId) const
 [symbolic api] - Returns the symbolic variable corresponding to the symbolic variable id. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable getSymbolicVariable (const std::string &symVarName) const
 [symbolic api] - Returns the symbolic variable corresponding to the symbolic variable name. More...
 
TRITON_EXPORT const std::vector< triton::engines::symbolic::PathConstraint > & getPathConstraints (void) const
 [symbolic api] - Returns the logical conjunction vector of path constraints. More...
 
TRITON_EXPORT std::vector< triton::engines::symbolic::PathConstraintgetPathConstraints (triton::usize start, triton::usize end) const
 [symbolic api] - Returns the logical conjunction vector of path constraints from a given range. More...
 
TRITON_EXPORT std::vector< triton::engines::symbolic::PathConstraintgetPathConstraintsOfThread (triton::uint32 threadId) const
 [symbolic api] - Returns the logical conjunction vector of path constraint of a given thread. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode getPathPredicate (void)
 [symbolic api] - Returns the current path predicate as an AST of logical conjunction of each taken branch. More...
 
TRITON_EXPORT std::vector< triton::ast::SharedAbstractNodegetPredicatesToReachAddress (triton::uint64 addr)
 [symbolic api] - Returns path predicates which may reach the targeted address. More...
 
TRITON_EXPORT triton::usize getSizeOfPathConstraints (void) const
 [symbolic api] - Returns the size of the path constraints More...
 
TRITON_EXPORT void pushPathConstraint (const triton::ast::SharedAbstractNode &node, const std::string &comment="")
 [symbolic api] - Pushes constraint created from node to the current path predicate. More...
 
TRITON_EXPORT void pushPathConstraint (const triton::engines::symbolic::PathConstraint &pco)
 [symbolic api] - Pushes constraint to the current path predicate. More...
 
TRITON_EXPORT void popPathConstraint (void)
 [symbolic api] - Pops the last constraints added to the path predicate. More...
 
TRITON_EXPORT void clearPathConstraints (void)
 [symbolic api] - Clears the current path predicate. More...
 
TRITON_EXPORT bool isSymbolicExpressionExists (triton::usize symExprId) const
 [symbolic api] - Returns true if the symbolic expression ID exists. More...
 
TRITON_EXPORT bool isMemorySymbolized (const triton::arch::MemoryAccess &mem) const
 [symbolic api] - Returns true if memory cell expressions contain symbolic variables. More...
 
TRITON_EXPORT bool isMemorySymbolized (triton::uint64 addr, triton::uint32 size=1) const
 [symbolic api] - Returns true if memory cell expressions contain symbolic variables. More...
 
TRITON_EXPORT bool isRegisterSymbolized (const triton::arch::Register &reg) const
 [symbolic api] - Returns true if the register expression contains a symbolic variable. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable symbolizeExpression (triton::usize exprId, triton::uint32 symVarSize, const std::string &symVarAlias="")
 [symbolic api] - Converts a symbolic expression to a symbolic variable. symVarSize must be in bits. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable symbolizeMemory (const triton::arch::MemoryAccess &mem, const std::string &symVarAlias="")
 [symbolic api] - Converts a symbolic memory expression to a symbolic variable. More...
 
TRITON_EXPORT void symbolizeMemory (triton::uint64 addr, triton::usize size)
 [symbolic api] - Converts a symbolic memory area to 8-bits symbolic variables. More...
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable symbolizeRegister (const triton::arch::Register &reg, const std::string &symVarAlias="")
 [symbolic api] - Converts a symbolic register expression to a symbolic variable. More...
 
TRITON_EXPORT void concretizeAllMemory (void)
 [symbolic api] - Concretizes all symbolic memory cells. More...
 
TRITON_EXPORT void concretizeAllRegister (void)
 [symbolic api] - Concretizes all symbolic register. More...
 
TRITON_EXPORT void concretizeMemory (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Concretizes symbolic memory cells. More...
 
TRITON_EXPORT void concretizeMemory (triton::uint64 addr)
 [symbolic api] - Concretizes a symbolic memory cell. More...
 
TRITON_EXPORT void concretizeRegister (const triton::arch::Register &reg)
 [symbolic api] - Concretizes a symbolic register. More...
 
TRITON_EXPORT std::unordered_map< triton::usize, triton::engines::symbolic::SharedSymbolicExpressionsliceExpressions (const triton::engines::symbolic::SharedSymbolicExpression &expr)
 [symbolic api] - Slices all expressions from a given one. More...
 
TRITON_EXPORT std::vector< triton::engines::symbolic::SharedSymbolicExpressiongetTaintedSymbolicExpressions (void) const
 [symbolic api] - Returns the list of the tainted symbolic expressions. More...
 
TRITON_EXPORT std::unordered_map< triton::usize, triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicExpressions (void) const
 [symbolic api] - Returns all symbolic expressions as a map of <SymExprId : SymExpr> More...
 
TRITON_EXPORT std::map< triton::usize, triton::engines::symbolic::SharedSymbolicVariablegetSymbolicVariables (void) const
 [symbolic api] - Returns all symbolic variables as a map of <SymVarId : SymVar> More...
 
TRITON_EXPORT triton::uint512 getConcreteVariableValue (const triton::engines::symbolic::SharedSymbolicVariable &symVar) const
 [symbolic api] - Gets the concrete value of a symbolic variable. More...
 
TRITON_EXPORT void setConcreteVariableValue (const triton::engines::symbolic::SharedSymbolicVariable &symVar, const triton::uint512 &value)
 [symbolic api] - Sets the concrete value of a symbolic variable. More...
 
TRITON_EXPORT std::unordered_map< triton::usize, triton::engines::solver::SolverModelgetModel (const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const
 [solver api] - Computes and returns a model from a symbolic constraint. State is returned in the status pointer as well as the solving time. A timeout can also be defined. More...
 
TRITON_EXPORT std::vector< std::unordered_map< triton::usize, triton::engines::solver::SolverModel > > getModels (const triton::ast::SharedAbstractNode &node, triton::uint32 limit, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const
 [solver api] - Computes and returns several models from a symbolic constraint. The limit is the number of models returned. State is returned in the status pointer as well as the solving time. A timeout can also be defined. More...
 
TRITON_EXPORT bool isSat (const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const
 Returns true if an expression is satisfiable. More...
 
TRITON_EXPORT triton::engines::solver::solver_e getSolver (void) const
 Returns the kind of solver as triton::engines::solver::solver_e. More...
 
TRITON_EXPORT const triton::engines::solver::SolverInterfacegetSolverInstance (void) const
 Returns the instance of the initialized solver. More...
 
TRITON_EXPORT void setSolver (triton::engines::solver::solver_e kind)
 Initializes a predefined solver. More...
 
TRITON_EXPORT void setCustomSolver (triton::engines::solver::SolverInterface *customSolver)
 Initializes a custom solver. More...
 
TRITON_EXPORT bool isSolverValid (void) const
 Returns true if the solver is valid. More...
 
TRITON_EXPORT triton::uint512 evaluateAstViaSolver (const triton::ast::SharedAbstractNode &node) const
 [solver api] - Evaluates a Triton's AST via the solver and returns a concrete value. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode simplifyAstViaSolver (const triton::ast::SharedAbstractNode &node) const
 [solver api] - Converts a Triton's AST to a solver's AST, perform a simplification and returns a Triton's AST. More...
 
TRITON_EXPORT void setSolverTimeout (triton::uint32 ms)
 [solver api] - Defines a solver timeout (in milliseconds). More...
 
TRITON_EXPORT void setSolverMemoryLimit (triton::uint32 limit)
 [solver api] - Defines a solver memory consumption limit (in megabytes). More...
 
TRITON_EXPORT triton::engines::taint::TaintEnginegetTaintEngine (void)
 [taint api] - Returns the instance of the taint engine. More...
 
TRITON_EXPORT const std::unordered_set< triton::uint64 > & getTaintedMemory (void) const
 [taint api] - Returns the tainted addresses. More...
 
TRITON_EXPORT std::unordered_set< const triton::arch::Register * > getTaintedRegisters (void) const
 [taint api] - Returns the tainted registers. More...
 
TRITON_EXPORT bool isTainted (const triton::arch::OperandWrapper &op) const
 [taint api] - Abstract taint verification. Returns true if the operand is tainted. More...
 
TRITON_EXPORT bool isMemoryTainted (triton::uint64 addr, triton::uint32 size=1) const
 [taint api] - Returns true if the address:size is tainted. More...
 
TRITON_EXPORT bool isMemoryTainted (const triton::arch::MemoryAccess &mem) const
 [taint api] - Returns true if the memory is tainted. More...
 
TRITON_EXPORT bool isRegisterTainted (const triton::arch::Register &reg) const
 [taint api] - Returns true if the register is tainted. More...
 
TRITON_EXPORT bool setTaint (const triton::arch::OperandWrapper &op, bool flag)
 [taint api] - Sets the flag (taint or untaint) to an abstract operand (Register or Memory). More...
 
TRITON_EXPORT bool setTaintMemory (const triton::arch::MemoryAccess &mem, bool flag)
 [taint api] - Sets the flag (taint or untaint) to a memory. More...
 
TRITON_EXPORT bool setTaintRegister (const triton::arch::Register &reg, bool flag)
 [taint api] - Sets the flag (taint or untaint) to a register. More...
 
TRITON_EXPORT bool taintMemory (triton::uint64 addr)
 [taint api] - Taints an address. Returns TAINTED if the address has been tainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool taintMemory (const triton::arch::MemoryAccess &mem)
 [taint api] - Taints a memory. Returns TAINTED if the memory has been tainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool taintRegister (const triton::arch::Register &reg)
 [taint api] - Taints a register. Returns TAINTED if the register has been tainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool untaintMemory (triton::uint64 addr)
 [taint api] - Untaints an address. Returns !TAINTED if the address has been untainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool untaintMemory (const triton::arch::MemoryAccess &mem)
 [taint api] - Untaints a memory. Returns !TAINTED if the memory has been untainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool untaintRegister (const triton::arch::Register &reg)
 [taint api] - Untaints a register. Returns !TAINTED if the register has been untainted correctly. Otherwise it returns the last defined state. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::OperandWrapper &op1, const triton::arch::OperandWrapper &op2)
 [taint api] - Abstract union tainting. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::MemoryAccess &memDst, const triton::arch::Immediate &imm)
 [taint api] - Taints MemoryImmediate with union. Returns true if the memDst is TAINTED. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::MemoryAccess &memDst, const triton::arch::MemoryAccess &memSrc)
 [taint api] - Taints MemoryMemory with union. Returns true if the memDst or memSrc are TAINTED. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::MemoryAccess &memDst, const triton::arch::Register &regSrc)
 [taint api] - Taints MemoryRegister with union. Returns true if the memDst or regSrc are TAINTED. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::Register &regDst, const triton::arch::Immediate &imm)
 [taint api] - Taints RegisterImmediate with union. Returns true if the regDst is TAINTED. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::Register &regDst, const triton::arch::MemoryAccess &memSrc)
 [taint api] - Taints RegisterMemory with union. Returns true if the regDst or memSrc are TAINTED. More...
 
TRITON_EXPORT bool taintUnion (const triton::arch::Register &regDst, const triton::arch::Register &regSrc)
 [taint api] - Taints RegisterRegister with union. Returns true if the regDst or regSrc are TAINTED. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::OperandWrapper &op1, const triton::arch::OperandWrapper &op2)
 [taint api] - Abstract assignment tainting. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::MemoryAccess &memDst, const triton::arch::Immediate &imm)
 [taint api] - Taints MemoryImmediate with assignment. Returns always false. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::MemoryAccess &memDst, const triton::arch::MemoryAccess &memSrc)
 [taint api] - Taints MemoryMemory with assignment. Returns true if the memDst is tainted. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::MemoryAccess &memDst, const triton::arch::Register &regSrc)
 [taint api] - Taints MemoryRegister with assignment. Returns true if the memDst is tainted. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::Register &regDst, const triton::arch::Immediate &imm)
 [taint api] - Taints RegisterImmediate with assignment. Returns always false. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::Register &regDst, const triton::arch::MemoryAccess &memSrc)
 [taint api] - Taints RegisterMemory with assignment. Returns true if the regDst is tainted. More...
 
TRITON_EXPORT bool taintAssignment (const triton::arch::Register &regDst, const triton::arch::Register &regSrc)
 [taint api] - Taints RegisterRegister with assignment. Returns true if the regDst is tainted. More...
 
TRITON_EXPORT triton::engines::synthesis::SynthesisResult synthesize (const triton::ast::SharedAbstractNode &node, bool constant=true, bool subexpr=true, bool opaque=false)
 [synthesizer api] - Synthesizes a given node. If constant is true, performa a constant synthesis. If opaque is true, perform opaque constant synthesis. If subexpr is true, analyze children AST. More...
 
TRITON_EXPORT std::ostream & liftToLLVM (std::ostream &stream, const triton::ast::SharedAbstractNode &node, const char *fname="__triton", bool optimize=false)
 [lifting api] - Lifts an AST and all its references to LLVM format. fname represents the name of the LLVM function. More...
 
TRITON_EXPORT std::ostream & liftToLLVM (std::ostream &stream, const triton::engines::symbolic::SharedSymbolicExpression &expr, const char *fname="__triton", bool optimize=false)
 [lifting api] - Lifts a symbolic expression and all its references to LLVM format. fname represents the name of the LLVM function. More...
 
TRITON_EXPORT std::ostream & liftToPython (std::ostream &stream, const triton::engines::symbolic::SharedSymbolicExpression &expr, bool icomment=false)
 [lifting api] - Lifts a symbolic expression and all its references to Python format. If icomment is true, then print instructions assembly in expression comments. More...
 
TRITON_EXPORT std::ostream & liftToSMT (std::ostream &stream, const triton::engines::symbolic::SharedSymbolicExpression &expr, bool assert_=false, bool icomment=false)
 [lifting api] - Lifts a symbolic expression and all its references to SMT format. If assert_ is true, then (assert <expr>). If icomment is true, then print instructions assembly in expression comments. More...
 
TRITON_EXPORT std::ostream & liftToDot (std::ostream &stream, const triton::ast::SharedAbstractNode &node)
 [lifting api] - Lifts an AST and all its references to Dot format. More...
 
TRITON_EXPORT std::ostream & liftToDot (std::ostream &stream, const triton::engines::symbolic::SharedSymbolicExpression &expr)
 [lifting api] - Lifts a symbolic expression and all its references to Dot format. More...
 
TRITON_EXPORT triton::ast::SharedAbstractNode simplifyAstViaLLVM (const triton::ast::SharedAbstractNode &node) const
 [lifting api] - Lifts and simplify an AST using LLVM More...
 

Public Attributes

triton::arch::ShortcutRegister registers
 A shortcut to access to a Register class from a register name. More...
 

Protected Attributes

triton::callbacks::Callbacks callbacks
 The Callbacks interface. More...
 
triton::arch::Architecture arch
 The architecture entry. More...
 
triton::modes::SharedModes modes
 The modes. More...
 
triton::engines::lifters::LiftingEnginelifting = nullptr
 The lifting engine. More...
 
triton::engines::taint::TaintEnginetaint = nullptr
 The taint engine. More...
 
triton::engines::symbolic::SymbolicEnginesymbolic = nullptr
 The symbolic engine. More...
 
triton::engines::solver::SolverEnginesolver = nullptr
 The solver engine. More...
 
triton::ast::SharedAstContext astCtxt
 The AST Context interface. More...
 
triton::arch::IrBuilderirBuilder = nullptr
 The IR builder. More...
 

Detailed Description

This is the main Triton Context class.

Definition at line 45 of file context.hpp.

Constructor & Destructor Documentation

◆ Context() [1/2]

triton::Context::Context ( )

Constructor of the Context.

Definition at line 171 of file context.cpp.

◆ Context() [2/2]

triton::Context::Context ( triton::arch::architecture_e  arch)

Constructor of the Context.

Definition at line 179 of file context.cpp.

◆ ~Context()

triton::Context::~Context ( )

Destructor of the Context.

Definition at line 185 of file context.cpp.

Member Function Documentation

◆ addCallback()

template<typename T >
template TRITON_EXPORT void triton::Context::addCallback ( triton::callbacks::callback_e  kind,
cb 
)
inline

[callbacks api] - Adds a callback.

Definition at line 310 of file context.hpp.

◆ assignSymbolicExpressionToMemory()

void triton::Context::assignSymbolicExpressionToMemory ( const triton::engines::symbolic::SharedSymbolicExpression se,
const triton::arch::MemoryAccess mem 
)

[symbolic api] - Assigns a symbolic expression to a memory.

Definition at line 814 of file context.cpp.

◆ assignSymbolicExpressionToRegister()

void triton::Context::assignSymbolicExpressionToRegister ( const triton::engines::symbolic::SharedSymbolicExpression se,
const triton::arch::Register reg 
)

[symbolic api] - Assigns a symbolic expression to a register.

Definition at line 820 of file context.cpp.

◆ buildSemantics() [1/2]

triton::arch::exception_e triton::Context::buildSemantics ( triton::arch::BasicBlock block)

[IR builder api] - Builds the instructions semantics of a block. Returns triton::arch::NO_FAULT if succeed.

Definition at line 606 of file context.cpp.

◆ buildSemantics() [2/2]

triton::arch::exception_e triton::Context::buildSemantics ( triton::arch::Instruction inst)

[IR builder api] - Builds the instruction semantics. Returns triton::arch::NO_FAULT if succeed.

Definition at line 600 of file context.cpp.

◆ clearArchitecture()

void triton::Context::clearArchitecture ( void  )

[architecture api] - Clears the architecture states (registers and memory).

Definition at line 261 of file context.cpp.

◆ clearCallbacks()

void triton::Context::clearCallbacks ( void  )

[callbacks api] - Clears recorded callbacks.

Definition at line 646 of file context.cpp.

◆ clearConcreteMemoryValue() [1/2]

void triton::Context::clearConcreteMemoryValue ( const triton::arch::MemoryAccess mem)

Clears concrete values assigned to the memory cells.

Definition at line 481 of file context.cpp.

◆ clearConcreteMemoryValue() [2/2]

void triton::Context::clearConcreteMemoryValue ( triton::uint64  baseAddr,
triton::usize  size = 1 
)

Clears concrete values assigned to the memory cells.

Definition at line 487 of file context.cpp.

◆ clearModes()

void triton::Context::clearModes ( void  )

[modes api] - Clears recorded modes.

Definition at line 686 of file context.cpp.

◆ clearPathConstraints()

void triton::Context::clearPathConstraints ( void  )

[symbolic api] - Clears the current path predicate.

Definition at line 978 of file context.cpp.

◆ concretizeAllMemory()

void triton::Context::concretizeAllMemory ( void  )

[symbolic api] - Concretizes all symbolic memory cells.

Definition at line 1008 of file context.cpp.

◆ concretizeAllRegister()

void triton::Context::concretizeAllRegister ( void  )

[symbolic api] - Concretizes all symbolic register.

Definition at line 1014 of file context.cpp.

◆ concretizeMemory() [1/2]

void triton::Context::concretizeMemory ( const triton::arch::MemoryAccess mem)

[symbolic api] - Concretizes symbolic memory cells.

Definition at line 1020 of file context.cpp.

◆ concretizeMemory() [2/2]

void triton::Context::concretizeMemory ( triton::uint64  addr)

[symbolic api] - Concretizes a symbolic memory cell.

Definition at line 1026 of file context.cpp.

◆ concretizeRegister()

void triton::Context::concretizeRegister ( const triton::arch::Register reg)

[symbolic api] - Concretizes a symbolic register.

Definition at line 1032 of file context.cpp.

◆ createSymbolicExpression()

const triton::engines::symbolic::SharedSymbolicExpression & triton::Context::createSymbolicExpression ( triton::arch::Instruction inst,
const triton::ast::SharedAbstractNode node,
const triton::arch::OperandWrapper dst,
const std::string &  comment = "" 
)

[symbolic api] - Returns the new symbolic abstract expression and links this expression to the instruction.

Definition at line 790 of file context.cpp.

◆ createSymbolicMemoryExpression()

const triton::engines::symbolic::SharedSymbolicExpression & triton::Context::createSymbolicMemoryExpression ( triton::arch::Instruction inst,
const triton::ast::SharedAbstractNode node,
const triton::arch::MemoryAccess mem,
const std::string &  comment = "" 
)

[symbolic api] - Returns the new symbolic memory expression and links this expression to the instruction.

Definition at line 796 of file context.cpp.

◆ createSymbolicRegisterExpression()

const triton::engines::symbolic::SharedSymbolicExpression & triton::Context::createSymbolicRegisterExpression ( triton::arch::Instruction inst,
const triton::ast::SharedAbstractNode node,
const triton::arch::Register reg,
const std::string &  comment = "" 
)

[symbolic api] - Returns the new symbolic register expression and links this expression to the instruction.

Definition at line 802 of file context.cpp.

◆ createSymbolicVolatileExpression()

const triton::engines::symbolic::SharedSymbolicExpression & triton::Context::createSymbolicVolatileExpression ( triton::arch::Instruction inst,
const triton::ast::SharedAbstractNode node,
const std::string &  comment = "" 
)

[symbolic api] - Returns the new symbolic volatile expression and links this expression to the instruction.

Definition at line 808 of file context.cpp.

◆ disassembly() [1/4]

void triton::Context::disassembly ( triton::arch::BasicBlock block,
triton::uint64  addr = 0 
) const

[architecture api] - Disassembles a block of instructions. You must define an architecture before.

Definition at line 499 of file context.cpp.

◆ disassembly() [2/4]

void triton::Context::disassembly ( triton::arch::Instruction inst) const

[architecture api] - Disassembles the instruction and setup operands.

Definition at line 493 of file context.cpp.

◆ disassembly() [3/4]

triton::arch::BasicBlock triton::Context::disassembly ( triton::uint64  addr) const

[architecture api] - Disassembles a concrete memory area from addr to control flow instruction and returns a BasicBlock.

Definition at line 511 of file context.cpp.

◆ disassembly() [4/4]

std::vector< triton::arch::Instruction > triton::Context::disassembly ( triton::uint64  addr,
triton::usize  count 
) const

[architecture api] - Disassembles a concrete memory area and returns a list of at most count disassembled instructions.

Definition at line 505 of file context.cpp.

◆ evaluateAstViaSolver()

triton::uint512 triton::Context::evaluateAstViaSolver ( const triton::ast::SharedAbstractNode node) const

[solver api] - Evaluates a Triton's AST via the solver and returns a concrete value.

Definition at line 1113 of file context.cpp.

◆ getAllRegisters()

const std::unordered_map< triton::arch::register_e, const triton::arch::Register > & triton::Context::getAllRegisters ( void  ) const

[architecture api] - Returns all registers.

See also
triton::arch::x86::register_e.

Definition at line 347 of file context.cpp.

◆ getArchitecture()

triton::arch::architecture_e triton::Context::getArchitecture ( void  ) const

[architecture api] - Returns the architecture as triton::arch::architecture_e.

Definition at line 234 of file context.cpp.

◆ getAstContext()

triton::ast::SharedAstContext triton::Context::getAstContext ( void  )

[IR builder api] - Returns the AST context. Used as AST builder.

Definition at line 612 of file context.cpp.

◆ getAstRepresentationMode()

triton::ast::representations::mode_e triton::Context::getAstRepresentationMode ( void  ) const

[AST representation api] - Returns the AST representation as triton::ast::representation_e.

Definition at line 620 of file context.cpp.

◆ getConcreteMemoryAreaValue()

std::vector< triton::uint8 > triton::Context::getConcreteMemoryAreaValue ( triton::uint64  baseAddr,
triton::usize  size,
bool  execCallbacks = true 
) const

[architecture api] - Returns the concrete value of a memory area.

Definition at line 371 of file context.cpp.

◆ getConcreteMemoryValue() [1/2]

triton::uint512 triton::Context::getConcreteMemoryValue ( const triton::arch::MemoryAccess mem,
bool  execCallbacks = true 
) const

[architecture api] - Returns the concrete value of memory cells.

Definition at line 365 of file context.cpp.

◆ getConcreteMemoryValue() [2/2]

triton::uint8 triton::Context::getConcreteMemoryValue ( triton::uint64  addr,
bool  execCallbacks = true 
) const

[architecture api] - Returns the concrete value of a memory cell.

Definition at line 359 of file context.cpp.

◆ getConcreteRegisterValue()

triton::uint512 triton::Context::getConcreteRegisterValue ( const triton::arch::Register reg,
bool  execCallbacks = true 
) const

[architecture api] - Returns the concrete value of a register.

Definition at line 377 of file context.cpp.

◆ getConcreteVariableValue()

triton::uint512 triton::Context::getConcreteVariableValue ( const triton::engines::symbolic::SharedSymbolicVariable symVar) const

[symbolic api] - Gets the concrete value of a symbolic variable.

Definition at line 900 of file context.cpp.

◆ getCpuInstance()

triton::arch::CpuInterface * triton::Context::getCpuInstance ( void  )

[architecture api] - Returns the instance of the current CPU used.

Definition at line 244 of file context.cpp.

◆ getEndianness()

triton::arch::endianness_e triton::Context::getEndianness ( void  ) const

[architecture api] - Returns the endianness as triton::arch::endianness_e.

Definition at line 239 of file context.cpp.

◆ getGprBitSize()

triton::uint32 triton::Context::getGprBitSize ( void  ) const

[architecture api] - Returns the bit in byte of the General Purpose Registers.

Definition at line 327 of file context.cpp.

◆ getGprSize()

triton::uint32 triton::Context::getGprSize ( void  ) const

[architecture api] - Returns the size in byte of the General Purpose Registers.

Definition at line 332 of file context.cpp.

◆ getImmediateAst() [1/2]

triton::ast::SharedAbstractNode triton::Context::getImmediateAst ( const triton::arch::Immediate imm)

[symbolic api] - Returns the AST corresponding to the immediate.

Definition at line 736 of file context.cpp.

◆ getImmediateAst() [2/2]

triton::ast::SharedAbstractNode triton::Context::getImmediateAst ( triton::arch::Instruction inst,
const triton::arch::Immediate imm 
)

[symbolic api] - Returns the AST corresponding to the immediate and defines the immediate as input of the instruction..

Definition at line 742 of file context.cpp.

◆ getMemoryAst() [1/2]

triton::ast::SharedAbstractNode triton::Context::getMemoryAst ( const triton::arch::MemoryAccess mem)

[symbolic api] - Returns the AST corresponding to the memory.

Definition at line 748 of file context.cpp.

◆ getMemoryAst() [2/2]

triton::ast::SharedAbstractNode triton::Context::getMemoryAst ( triton::arch::Instruction inst,
const triton::arch::MemoryAccess mem 
)

[symbolic api] - Returns the AST corresponding to the memory and defines the memory cell as input of the instruction.

Definition at line 754 of file context.cpp.

◆ getModel()

std::unordered_map< triton::usize, triton::engines::solver::SolverModel > triton::Context::getModel ( const triton::ast::SharedAbstractNode node,
triton::engines::solver::status_e status = nullptr,
triton::uint32  timeout = 0,
triton::uint32 solvingTime = nullptr 
) const

[solver api] - Computes and returns a model from a symbolic constraint. State is returned in the status pointer as well as the solving time. A timeout can also be defined.

item1: symbolic variable id
item2: model

Definition at line 1095 of file context.cpp.

◆ getModels()

std::vector< std::unordered_map< triton::usize, triton::engines::solver::SolverModel > > triton::Context::getModels ( const triton::ast::SharedAbstractNode node,
triton::uint32  limit,
triton::engines::solver::status_e status = nullptr,
triton::uint32  timeout = 0,
triton::uint32 solvingTime = nullptr 
) const

[solver api] - Computes and returns several models from a symbolic constraint. The limit is the number of models returned. State is returned in the status pointer as well as the solving time. A timeout can also be defined.

item1: symbolic variable id
item2: model

Definition at line 1101 of file context.cpp.

◆ getNopInstruction()

const triton::arch::Instruction triton::Context::getNopInstruction ( void  ) const

Returns a NOP instruction according to the architecture.

Definition at line 342 of file context.cpp.

◆ getNumberOfRegisters()

triton::uint32 triton::Context::getNumberOfRegisters ( void  ) const

[architecture api] - Returns the number of registers according to the CPU architecture.

Definition at line 337 of file context.cpp.

◆ getOperandAst() [1/2]

triton::ast::SharedAbstractNode triton::Context::getOperandAst ( const triton::arch::OperandWrapper op)

[symbolic api] - Returns the AST corresponding to the operand.

Definition at line 724 of file context.cpp.

◆ getOperandAst() [2/2]

triton::ast::SharedAbstractNode triton::Context::getOperandAst ( triton::arch::Instruction inst,
const triton::arch::OperandWrapper op 
)

[symbolic api] - Returns the AST corresponding to the operand.

Definition at line 730 of file context.cpp.

◆ getParentRegister() [1/2]

const triton::arch::Register & triton::Context::getParentRegister ( const triton::arch::Register reg) const

[architecture api] - Returns parent Register from a register.

Definition at line 297 of file context.cpp.

◆ getParentRegister() [2/2]

const triton::arch::Register & triton::Context::getParentRegister ( triton::arch::register_e  id) const

[architecture api] - Returns parent Register from regId.

Definition at line 302 of file context.cpp.

◆ getParentRegisters()

std::set< const triton::arch::Register * > triton::Context::getParentRegisters ( void  ) const

[architecture api] - Returns all parent registers.

See also
triton::arch::x86::register_e.

Definition at line 353 of file context.cpp.

◆ getPathConstraints() [1/2]

std::vector< triton::engines::symbolic::PathConstraint > triton::Context::getPathConstraints ( triton::usize  start,
triton::usize  end 
) const

[symbolic api] - Returns the logical conjunction vector of path constraints from a given range.

Definition at line 930 of file context.cpp.

◆ getPathConstraints() [2/2]

const std::vector< triton::engines::symbolic::PathConstraint > & triton::Context::getPathConstraints ( void  ) const

[symbolic api] - Returns the logical conjunction vector of path constraints.

Definition at line 924 of file context.cpp.

◆ getPathConstraintsOfThread()

std::vector< triton::engines::symbolic::PathConstraint > triton::Context::getPathConstraintsOfThread ( triton::uint32  threadId) const

[symbolic api] - Returns the logical conjunction vector of path constraint of a given thread.

Definition at line 936 of file context.cpp.

◆ getPathPredicate()

triton::ast::SharedAbstractNode triton::Context::getPathPredicate ( void  )

[symbolic api] - Returns the current path predicate as an AST of logical conjunction of each taken branch.

Definition at line 948 of file context.cpp.

◆ getPredicatesToReachAddress()

std::vector< triton::ast::SharedAbstractNode > triton::Context::getPredicatesToReachAddress ( triton::uint64  addr)

[symbolic api] - Returns path predicates which may reach the targeted address.

Definition at line 954 of file context.cpp.

◆ getRegister() [1/2]

const triton::arch::Register & triton::Context::getRegister ( const std::string &  name) const

[architecture api] - Returns Register from its name.

Definition at line 292 of file context.cpp.

◆ getRegister() [2/2]

const triton::arch::Register & triton::Context::getRegister ( triton::arch::register_e  id) const

[architecture api] - Returns Register from regId.

Definition at line 287 of file context.cpp.

◆ getRegisterAst() [1/2]

triton::ast::SharedAbstractNode triton::Context::getRegisterAst ( const triton::arch::Register reg)

[symbolic api] - Returns the AST corresponding to the register.

Definition at line 760 of file context.cpp.

◆ getRegisterAst() [2/2]

triton::ast::SharedAbstractNode triton::Context::getRegisterAst ( triton::arch::Instruction inst,
const triton::arch::Register reg 
)

[symbolic api] - Returns the AST corresponding to the register and defines the register as input of the instruction.

Definition at line 766 of file context.cpp.

◆ getSizeOfPathConstraints()

triton::usize triton::Context::getSizeOfPathConstraints ( void  ) const

[symbolic api] - Returns the size of the path constraints

Definition at line 942 of file context.cpp.

◆ getSolver()

triton::engines::solver::solver_e triton::Context::getSolver ( void  ) const

Returns the kind of solver as triton::engines::solver::solver_e.

Definition at line 1065 of file context.cpp.

◆ getSolverInstance()

const triton::engines::solver::SolverInterface * triton::Context::getSolverInstance ( void  ) const

Returns the instance of the initialized solver.

Definition at line 1071 of file context.cpp.

◆ getSymbolicEngine()

triton::engines::symbolic::SymbolicEngine * triton::Context::getSymbolicEngine ( void  )

[symbolic api] - Returns the instance of the symbolic engine.

Definition at line 694 of file context.cpp.

◆ getSymbolicExpression()

triton::engines::symbolic::SharedSymbolicExpression triton::Context::getSymbolicExpression ( triton::usize  symExprId) const

[symbolic api] - Returns the symbolic expression corresponding to an id.

Definition at line 894 of file context.cpp.

◆ getSymbolicExpressions()

std::unordered_map< triton::usize, triton::engines::symbolic::SharedSymbolicExpression > triton::Context::getSymbolicExpressions ( void  ) const

[symbolic api] - Returns all symbolic expressions as a map of <SymExprId : SymExpr>

Definition at line 1050 of file context.cpp.

◆ getSymbolicMemory() [1/2]

triton::engines::symbolic::SharedSymbolicExpression triton::Context::getSymbolicMemory ( triton::uint64  addr) const

[symbolic api] - Returns the symbolic expression assigned to the memory address.

Definition at line 826 of file context.cpp.

◆ getSymbolicMemory() [2/2]

std::unordered_map< triton::uint64, triton::engines::symbolic::SharedSymbolicExpression > triton::Context::getSymbolicMemory ( void  ) const

[symbolic api] - Returns the map (<Addr : SymExpr>) of symbolic memory defined.

Definition at line 838 of file context.cpp.

◆ getSymbolicMemoryAreaValue()

std::vector< triton::uint8 > triton::Context::getSymbolicMemoryAreaValue ( triton::uint64  baseAddr,
triton::usize  size 
)

[symbolic api] - Returns the symbolic values of a memory area.

Definition at line 862 of file context.cpp.

◆ getSymbolicMemoryValue() [1/2]

triton::uint512 triton::Context::getSymbolicMemoryValue ( const triton::arch::MemoryAccess mem)

[symbolic api] - Returns the symbolic memory value.

Definition at line 856 of file context.cpp.

◆ getSymbolicMemoryValue() [2/2]

triton::uint8 triton::Context::getSymbolicMemoryValue ( triton::uint64  address)

[symbolic api] - Returns the symbolic memory value.

Definition at line 850 of file context.cpp.

◆ getSymbolicRegister()

const triton::engines::symbolic::SharedSymbolicExpression & triton::Context::getSymbolicRegister ( const triton::arch::Register reg) const

[symbolic api] - Returns the symbolic expression assigned to the parent register.

Definition at line 844 of file context.cpp.

◆ getSymbolicRegisters()

std::unordered_map< triton::arch::register_e, triton::engines::symbolic::SharedSymbolicExpression > triton::Context::getSymbolicRegisters ( void  ) const

[symbolic api] - Returns the map of symbolic registers defined.

Definition at line 832 of file context.cpp.

◆ getSymbolicRegisterValue()

triton::uint512 triton::Context::getSymbolicRegisterValue ( const triton::arch::Register reg)

[symbolic api] - Returns the symbolic register value.

Definition at line 868 of file context.cpp.

◆ getSymbolicVariable() [1/2]

triton::engines::symbolic::SharedSymbolicVariable triton::Context::getSymbolicVariable ( const std::string &  symVarName) const

[symbolic api] - Returns the symbolic variable corresponding to the symbolic variable name.

Definition at line 918 of file context.cpp.

◆ getSymbolicVariable() [2/2]

triton::engines::symbolic::SharedSymbolicVariable triton::Context::getSymbolicVariable ( triton::usize  symVarId) const

[symbolic api] - Returns the symbolic variable corresponding to the symbolic variable id.

Definition at line 912 of file context.cpp.

◆ getSymbolicVariables()

std::map< triton::usize, triton::engines::symbolic::SharedSymbolicVariable > triton::Context::getSymbolicVariables ( void  ) const

[symbolic api] - Returns all symbolic variables as a map of <SymVarId : SymVar>

Definition at line 1056 of file context.cpp.

◆ getTaintedMemory()

const std::unordered_set< triton::uint64 > & triton::Context::getTaintedMemory ( void  ) const

[taint api] - Returns the tainted addresses.

Definition at line 1161 of file context.cpp.

◆ getTaintedRegisters()

std::unordered_set< const triton::arch::Register * > triton::Context::getTaintedRegisters ( void  ) const

[taint api] - Returns the tainted registers.

Definition at line 1167 of file context.cpp.

◆ getTaintedSymbolicExpressions()

std::vector< triton::engines::symbolic::SharedSymbolicExpression > triton::Context::getTaintedSymbolicExpressions ( void  ) const

[symbolic api] - Returns the list of the tainted symbolic expressions.

Definition at line 1044 of file context.cpp.

◆ getTaintEngine()

triton::engines::taint::TaintEngine * triton::Context::getTaintEngine ( void  )

[taint api] - Returns the instance of the taint engine.

Definition at line 1155 of file context.cpp.

◆ initEngines()

void triton::Context::initEngines ( void  )

[proccesing api] - Initializes everything.

Definition at line 520 of file context.cpp.

◆ isArchitectureValid()

bool triton::Context::isArchitectureValid ( void  ) const

[Architecture api] - Returns true if the architecture is valid.

Definition at line 229 of file context.cpp.

◆ isConcreteMemoryValueDefined() [1/2]

bool triton::Context::isConcreteMemoryValueDefined ( const triton::arch::MemoryAccess mem) const

Returns true if memory cells have a defined concrete value.

Definition at line 469 of file context.cpp.

◆ isConcreteMemoryValueDefined() [2/2]

bool triton::Context::isConcreteMemoryValueDefined ( triton::uint64  baseAddr,
triton::usize  size = 1 
) const

Returns true if memory cells have a defined concrete value.

Definition at line 475 of file context.cpp.

◆ isFlag() [1/2]

bool triton::Context::isFlag ( const triton::arch::Register reg) const

[architecture api] - Returns true if the register id is a flag.

Definition at line 272 of file context.cpp.

◆ isFlag() [2/2]

bool triton::Context::isFlag ( triton::arch::register_e  regId) const

[architecture api] - Returns true if the register id is a flag.

See also
triton::arch::x86::register_e.

Definition at line 267 of file context.cpp.

◆ isMemorySymbolized() [1/2]

bool triton::Context::isMemorySymbolized ( const triton::arch::MemoryAccess mem) const

[symbolic api] - Returns true if memory cell expressions contain symbolic variables.

Definition at line 990 of file context.cpp.

◆ isMemorySymbolized() [2/2]

bool triton::Context::isMemorySymbolized ( triton::uint64  addr,
triton::uint32  size = 1 
) const

[symbolic api] - Returns true if memory cell expressions contain symbolic variables.

Definition at line 996 of file context.cpp.

◆ isMemoryTainted() [1/2]

bool triton::Context::isMemoryTainted ( const triton::arch::MemoryAccess mem) const

[taint api] - Returns true if the memory is tainted.

Definition at line 1185 of file context.cpp.

◆ isMemoryTainted() [2/2]

bool triton::Context::isMemoryTainted ( triton::uint64  addr,
triton::uint32  size = 1 
) const

[taint api] - Returns true if the address:size is tainted.

Definition at line 1179 of file context.cpp.

◆ isModeEnabled()

bool triton::Context::isModeEnabled ( triton::modes::mode_e  mode) const

[modes api] - Returns true if the mode is enabled.

Definition at line 681 of file context.cpp.

◆ isRegister() [1/2]

bool triton::Context::isRegister ( const triton::arch::Register reg) const

[architecture api] - Returns true if the regId is a register.

Definition at line 282 of file context.cpp.

◆ isRegister() [2/2]

bool triton::Context::isRegister ( triton::arch::register_e  regId) const

[architecture api] - Returns true if the regId is a register.

See also
triton::arch::x86::register_e.

Definition at line 277 of file context.cpp.

◆ isRegisterSymbolized()

bool triton::Context::isRegisterSymbolized ( const triton::arch::Register reg) const

[symbolic api] - Returns true if the register expression contains a symbolic variable.

Definition at line 1002 of file context.cpp.

◆ isRegisterTainted()

bool triton::Context::isRegisterTainted ( const triton::arch::Register reg) const

[taint api] - Returns true if the register is tainted.

Definition at line 1191 of file context.cpp.

◆ isRegisterValid() [1/2]

bool triton::Context::isRegisterValid ( const triton::arch::Register reg) const

[architecture api] - Returns true if the regId is a register or a flag.

Definition at line 312 of file context.cpp.

◆ isRegisterValid() [2/2]

bool triton::Context::isRegisterValid ( triton::arch::register_e  regId) const

[architecture api] - Returns true if the regId is a register or a flag.

See also
triton::arch::x86::register_e.

Definition at line 307 of file context.cpp.

◆ isSat()

bool triton::Context::isSat ( const triton::ast::SharedAbstractNode node,
triton::engines::solver::status_e status = nullptr,
triton::uint32  timeout = 0,
triton::uint32 solvingTime = nullptr 
) const

Returns true if an expression is satisfiable.

Definition at line 1107 of file context.cpp.

◆ isSolverValid()

bool triton::Context::isSolverValid ( void  ) const

Returns true if the solver is valid.

Definition at line 1089 of file context.cpp.

◆ isSymbolicExpressionExists()

bool triton::Context::isSymbolicExpressionExists ( triton::usize  symExprId) const

[symbolic api] - Returns true if the symbolic expression ID exists.

Definition at line 984 of file context.cpp.

◆ isTainted()

bool triton::Context::isTainted ( const triton::arch::OperandWrapper op) const

[taint api] - Abstract taint verification. Returns true if the operand is tainted.

Definition at line 1173 of file context.cpp.

◆ isThumb()

bool triton::Context::isThumb ( void  ) const

[architecture api] - Returns true if the execution mode is Thumb. Only useful for Arm32.

Definition at line 317 of file context.cpp.

◆ liftToDot() [1/2]

std::ostream & triton::Context::liftToDot ( std::ostream &  stream,
const triton::ast::SharedAbstractNode node 
)

[lifting api] - Lifts an AST and all its references to Dot format.

Definition at line 1376 of file context.cpp.

◆ liftToDot() [2/2]

std::ostream & triton::Context::liftToDot ( std::ostream &  stream,
const triton::engines::symbolic::SharedSymbolicExpression expr 
)

[lifting api] - Lifts a symbolic expression and all its references to Dot format.

Definition at line 1382 of file context.cpp.

◆ liftToLLVM() [1/2]

std::ostream & triton::Context::liftToLLVM ( std::ostream &  stream,
const triton::ast::SharedAbstractNode node,
const char *  fname = "__triton",
bool  optimize = false 
)

[lifting api] - Lifts an AST and all its references to LLVM format. fname represents the name of the LLVM function.

Definition at line 1350 of file context.cpp.

◆ liftToLLVM() [2/2]

std::ostream & triton::Context::liftToLLVM ( std::ostream &  stream,
const triton::engines::symbolic::SharedSymbolicExpression expr,
const char *  fname = "__triton",
bool  optimize = false 
)

[lifting api] - Lifts a symbolic expression and all its references to LLVM format. fname represents the name of the LLVM function.

Definition at line 1359 of file context.cpp.

◆ liftToPython()

std::ostream & triton::Context::liftToPython ( std::ostream &  stream,
const triton::engines::symbolic::SharedSymbolicExpression expr,
bool  icomment = false 
)

[lifting api] - Lifts a symbolic expression and all its references to Python format. If icomment is true, then print instructions assembly in expression comments.

Definition at line 1364 of file context.cpp.

◆ liftToSMT()

std::ostream & triton::Context::liftToSMT ( std::ostream &  stream,
const triton::engines::symbolic::SharedSymbolicExpression expr,
bool  assert_ = false,
bool  icomment = false 
)

[lifting api] - Lifts a symbolic expression and all its references to SMT format. If assert_ is true, then (assert <expr>). If icomment is true, then print instructions assembly in expression comments.

Definition at line 1370 of file context.cpp.

◆ newSymbolicExpression()

triton::engines::symbolic::SharedSymbolicExpression triton::Context::newSymbolicExpression ( const triton::ast::SharedAbstractNode node,
const std::string &  comment = "" 
)

[symbolic api] - Returns a new symbolic expression. Note that if there are simplification passes recorded, simplification will be applied.

Definition at line 772 of file context.cpp.

◆ newSymbolicVariable()

triton::engines::symbolic::SharedSymbolicVariable triton::Context::newSymbolicVariable ( triton::uint32  varSize,
const std::string &  alias = "" 
)

[symbolic api] - Returns a new symbolic variable.

Definition at line 778 of file context.cpp.

◆ popPathConstraint()

void triton::Context::popPathConstraint ( void  )

[symbolic api] - Pops the last constraints added to the path predicate.

Definition at line 972 of file context.cpp.

◆ processCallbacks() [1/3]

void triton::Context::processCallbacks ( triton::callbacks::callback_e  kind,
const triton::arch::MemoryAccess mem 
)

[callbacks api] - Processes callbacks according to the kind and the C++ polymorphism.

Definition at line 659 of file context.cpp.

◆ processCallbacks() [2/3]

void triton::Context::processCallbacks ( triton::callbacks::callback_e  kind,
const triton::arch::Register reg 
)

[callbacks api] - Processes callbacks according to the kind and the C++ polymorphism.

Definition at line 666 of file context.cpp.

◆ processCallbacks() [3/3]

[callbacks api] - Processes callbacks according to the kind and the C++ polymorphism.

Definition at line 651 of file context.cpp.

◆ processing() [1/2]

triton::arch::exception_e triton::Context::processing ( triton::arch::BasicBlock block,
triton::uint64  addr = 0 
)

[proccesing api] - Processes a block of instructions and updates engines according to instructions semantics. Returns triton::arch::NO_FAULT if succeed.

Definition at line 590 of file context.cpp.

◆ processing() [2/2]

triton::arch::exception_e triton::Context::processing ( triton::arch::Instruction inst)

[proccesing api] - Processes an instruction and updates engines according to the instruction semantics. Returns triton::arch::NO_FAULT if succeed.

Definition at line 583 of file context.cpp.

◆ pushPathConstraint() [1/2]

void triton::Context::pushPathConstraint ( const triton::ast::SharedAbstractNode node,
const std::string &  comment = "" 
)

[symbolic api] - Pushes constraint created from node to the current path predicate.

Definition at line 960 of file context.cpp.

◆ pushPathConstraint() [2/2]

void triton::Context::pushPathConstraint ( const triton::engines::symbolic::PathConstraint pco)

[symbolic api] - Pushes constraint to the current path predicate.

Definition at line 966 of file context.cpp.

◆ removeCallback()

template<typename T >
template TRITON_EXPORT void triton::Context::removeCallback ( triton::callbacks::callback_e  kind,
cb 
)
inline

[callbacks api] - Removes a callback.

Definition at line 315 of file context.hpp.

◆ removeEngines()

void triton::Context::removeEngines ( void  )

[proccesing api] - Removes everything.

Definition at line 548 of file context.cpp.

◆ removeSymbolicExpression()

void triton::Context::removeSymbolicExpression ( const triton::engines::symbolic::SharedSymbolicExpression expr)

[symbolic api] - Removes the symbolic expression corresponding to the id.

Definition at line 784 of file context.cpp.

◆ reset()

void triton::Context::reset ( void  )

[proccesing api] - Resets everything.

Definition at line 572 of file context.cpp.

◆ setArchitecture()

void triton::Context::setArchitecture ( triton::arch::architecture_e  arch)

[architecture api] - Initializes an architecture.

See also
triton::arch::architecture_e.

Definition at line 251 of file context.cpp.

◆ setAstRepresentationMode()

void triton::Context::setAstRepresentationMode ( triton::ast::representations::mode_e  mode)

[AST representation api] - Sets the AST representation.

Definition at line 625 of file context.cpp.

◆ setConcreteMemoryAreaValue() [1/2]

void triton::Context::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const std::vector< triton::uint8 > &  values,
bool  execCallbacks = true 
)

[architecture api] - Sets the concrete value of a memory area.

Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.

Definition at line 405 of file context.cpp.

◆ setConcreteMemoryAreaValue() [2/2]

void triton::Context::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const void *  area,
triton::usize  size,
bool  execCallbacks = true 
)

[architecture api] - Sets the concrete value of a memory area.

Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.

Definition at line 418 of file context.cpp.

◆ setConcreteMemoryValue() [1/2]

void triton::Context::setConcreteMemoryValue ( const triton::arch::MemoryAccess mem,
const triton::uint512 value,
bool  execCallbacks = true 
)

[architecture api] - Sets the concrete value of memory cells.

Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.

Definition at line 394 of file context.cpp.

◆ setConcreteMemoryValue() [2/2]

void triton::Context::setConcreteMemoryValue ( triton::uint64  addr,
triton::uint8  value,
bool  execCallbacks = true 
)

[architecture api] - Sets the concrete value of a memory cell.

Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.

Definition at line 383 of file context.cpp.

◆ setConcreteRegisterValue()

void triton::Context::setConcreteRegisterValue ( const triton::arch::Register reg,
const triton::uint512 value,
bool  execCallbacks = true 
)

[architecture api] - Sets the concrete value of a register.

Note that by setting a concrete value will probably imply a desynchronization with the symbolic state (if it exists). You should probably use the concretize functions after this.

Definition at line 431 of file context.cpp.

◆ setConcreteState()

void triton::Context::setConcreteState ( triton::arch::Architecture other)

[architecture api] - Defines a concrete state.

Definition at line 442 of file context.cpp.

◆ setConcreteVariableValue()

void triton::Context::setConcreteVariableValue ( const triton::engines::symbolic::SharedSymbolicVariable symVar,
const triton::uint512 value 
)

[symbolic api] - Sets the concrete value of a symbolic variable.

Definition at line 906 of file context.cpp.

◆ setCustomSolver()

void triton::Context::setCustomSolver ( triton::engines::solver::SolverInterface customSolver)

Initializes a custom solver.

Definition at line 1083 of file context.cpp.

◆ setMode()

void triton::Context::setMode ( triton::modes::mode_e  mode,
bool  flag 
)

[modes api] - Enables or disables a specific mode.

Definition at line 676 of file context.cpp.

◆ setSolver()

void triton::Context::setSolver ( triton::engines::solver::solver_e  kind)

Initializes a predefined solver.

Definition at line 1077 of file context.cpp.

◆ setSolverMemoryLimit()

void triton::Context::setSolverMemoryLimit ( triton::uint32  limit)

[solver api] - Defines a solver memory consumption limit (in megabytes).

Definition at line 1146 of file context.cpp.

◆ setSolverTimeout()

void triton::Context::setSolverTimeout ( triton::uint32  ms)

[solver api] - Defines a solver timeout (in milliseconds).

Definition at line 1140 of file context.cpp.

◆ setTaint()

bool triton::Context::setTaint ( const triton::arch::OperandWrapper op,
bool  flag 
)

[taint api] - Sets the flag (taint or untaint) to an abstract operand (Register or Memory).

Definition at line 1197 of file context.cpp.

◆ setTaintMemory()

bool triton::Context::setTaintMemory ( const triton::arch::MemoryAccess mem,
bool  flag 
)

[taint api] - Sets the flag (taint or untaint) to a memory.

Definition at line 1203 of file context.cpp.

◆ setTaintRegister()

bool triton::Context::setTaintRegister ( const triton::arch::Register reg,
bool  flag 
)

[taint api] - Sets the flag (taint or untaint) to a register.

Definition at line 1210 of file context.cpp.

◆ setThumb()

void triton::Context::setThumb ( bool  state)

[architecture api] - Sets CPU state to Thumb mode.

Definition at line 322 of file context.cpp.

◆ simplify() [1/2]

triton::arch::BasicBlock triton::Context::simplify ( const triton::arch::BasicBlock block,
bool  padding = false 
) const

[symbolic api] - Processes a dead store elimination simplification on a given basic block. If padding is true, keep addresses aligned and padds with NOP instructions.

Definition at line 888 of file context.cpp.

◆ simplify() [2/2]

triton::ast::SharedAbstractNode triton::Context::simplify ( const triton::ast::SharedAbstractNode node,
bool  usingSolver = false,
bool  usingLLVM = false 
) const

[symbolic api] - Processes all recorded AST simplifications, uses solver's simplifications if usingSolver is true or LLVM is usingLLVM is true. Returns the simplified AST.

Definition at line 874 of file context.cpp.

◆ simplifyAstViaLLVM()

triton::ast::SharedAbstractNode triton::Context::simplifyAstViaLLVM ( const triton::ast::SharedAbstractNode node) const

[lifting api] - Lifts and simplify an AST using LLVM

Definition at line 1388 of file context.cpp.

◆ simplifyAstViaSolver()

triton::ast::SharedAbstractNode triton::Context::simplifyAstViaSolver ( const triton::ast::SharedAbstractNode node) const

[solver api] - Converts a Triton's AST to a solver's AST, perform a simplification and returns a Triton's AST.

Definition at line 1129 of file context.cpp.

◆ sliceExpressions()

std::unordered_map< triton::usize, triton::engines::symbolic::SharedSymbolicExpression > triton::Context::sliceExpressions ( const triton::engines::symbolic::SharedSymbolicExpression expr)

[symbolic api] - Slices all expressions from a given one.

Definition at line 1038 of file context.cpp.

◆ symbolizeExpression()

triton::engines::symbolic::SharedSymbolicVariable triton::Context::symbolizeExpression ( triton::usize  exprId,
triton::uint32  symVarSize,
const std::string &  symVarAlias = "" 
)

[symbolic api] - Converts a symbolic expression to a symbolic variable. symVarSize must be in bits.

Definition at line 700 of file context.cpp.

◆ symbolizeMemory() [1/2]

triton::engines::symbolic::SharedSymbolicVariable triton::Context::symbolizeMemory ( const triton::arch::MemoryAccess mem,
const std::string &  symVarAlias = "" 
)

[symbolic api] - Converts a symbolic memory expression to a symbolic variable.

Definition at line 706 of file context.cpp.

◆ symbolizeMemory() [2/2]

void triton::Context::symbolizeMemory ( triton::uint64  addr,
triton::usize  size 
)

[symbolic api] - Converts a symbolic memory area to 8-bits symbolic variables.

Definition at line 712 of file context.cpp.

◆ symbolizeRegister()

triton::engines::symbolic::SharedSymbolicVariable triton::Context::symbolizeRegister ( const triton::arch::Register reg,
const std::string &  symVarAlias = "" 
)

[symbolic api] - Converts a symbolic register expression to a symbolic variable.

Definition at line 718 of file context.cpp.

◆ synthesize()

triton::engines::synthesis::SynthesisResult triton::Context::synthesize ( const triton::ast::SharedAbstractNode node,
bool  constant = true,
bool  subexpr = true,
bool  opaque = false 
)

[synthesizer api] - Synthesizes a given node. If constant is true, performa a constant synthesis. If opaque is true, perform opaque constant synthesis. If subexpr is true, analyze children AST.

Definition at line 1340 of file context.cpp.

◆ taintAssignment() [1/7]

bool triton::Context::taintAssignment ( const triton::arch::MemoryAccess memDst,
const triton::arch::Immediate imm 
)

[taint api] - Taints MemoryImmediate with assignment. Returns always false.

Definition at line 1301 of file context.cpp.

◆ taintAssignment() [2/7]

bool triton::Context::taintAssignment ( const triton::arch::MemoryAccess memDst,
const triton::arch::MemoryAccess memSrc 
)

[taint api] - Taints MemoryMemory with assignment. Returns true if the memDst is tainted.

Definition at line 1307 of file context.cpp.

◆ taintAssignment() [3/7]

bool triton::Context::taintAssignment ( const triton::arch::MemoryAccess memDst,
const triton::arch::Register regSrc 
)

[taint api] - Taints MemoryRegister with assignment. Returns true if the memDst is tainted.

Definition at line 1313 of file context.cpp.

◆ taintAssignment() [4/7]

bool triton::Context::taintAssignment ( const triton::arch::OperandWrapper op1,
const triton::arch::OperandWrapper op2 
)

[taint api] - Abstract assignment tainting.

Definition at line 1295 of file context.cpp.

◆ taintAssignment() [5/7]

bool triton::Context::taintAssignment ( const triton::arch::Register regDst,
const triton::arch::Immediate imm 
)

[taint api] - Taints RegisterImmediate with assignment. Returns always false.

Definition at line 1319 of file context.cpp.

◆ taintAssignment() [6/7]

bool triton::Context::taintAssignment ( const triton::arch::Register regDst,
const triton::arch::MemoryAccess memSrc 
)

[taint api] - Taints RegisterMemory with assignment. Returns true if the regDst is tainted.

Definition at line 1325 of file context.cpp.

◆ taintAssignment() [7/7]

bool triton::Context::taintAssignment ( const triton::arch::Register regDst,
const triton::arch::Register regSrc 
)

[taint api] - Taints RegisterRegister with assignment. Returns true if the regDst is tainted.

Definition at line 1331 of file context.cpp.

◆ taintMemory() [1/2]

bool triton::Context::taintMemory ( const triton::arch::MemoryAccess mem)

[taint api] - Taints a memory. Returns TAINTED if the memory has been tainted correctly. Otherwise it returns the last defined state.

Definition at line 1223 of file context.cpp.

◆ taintMemory() [2/2]

bool triton::Context::taintMemory ( triton::uint64  addr)

[taint api] - Taints an address. Returns TAINTED if the address has been tainted correctly. Otherwise it returns the last defined state.

Definition at line 1217 of file context.cpp.

◆ taintRegister()

bool triton::Context::taintRegister ( const triton::arch::Register reg)

[taint api] - Taints a register. Returns TAINTED if the register has been tainted correctly. Otherwise it returns the last defined state.

Definition at line 1229 of file context.cpp.

◆ taintUnion() [1/7]

bool triton::Context::taintUnion ( const triton::arch::MemoryAccess memDst,
const triton::arch::Immediate imm 
)

[taint api] - Taints MemoryImmediate with union. Returns true if the memDst is TAINTED.

Definition at line 1259 of file context.cpp.

◆ taintUnion() [2/7]

bool triton::Context::taintUnion ( const triton::arch::MemoryAccess memDst,
const triton::arch::MemoryAccess memSrc 
)

[taint api] - Taints MemoryMemory with union. Returns true if the memDst or memSrc are TAINTED.

Definition at line 1265 of file context.cpp.

◆ taintUnion() [3/7]

bool triton::Context::taintUnion ( const triton::arch::MemoryAccess memDst,
const triton::arch::Register regSrc 
)

[taint api] - Taints MemoryRegister with union. Returns true if the memDst or regSrc are TAINTED.

Definition at line 1271 of file context.cpp.

◆ taintUnion() [4/7]

bool triton::Context::taintUnion ( const triton::arch::OperandWrapper op1,
const triton::arch::OperandWrapper op2 
)

[taint api] - Abstract union tainting.

Definition at line 1253 of file context.cpp.

◆ taintUnion() [5/7]

bool triton::Context::taintUnion ( const triton::arch::Register regDst,
const triton::arch::Immediate imm 
)

[taint api] - Taints RegisterImmediate with union. Returns true if the regDst is TAINTED.

Definition at line 1277 of file context.cpp.

◆ taintUnion() [6/7]

bool triton::Context::taintUnion ( const triton::arch::Register regDst,
const triton::arch::MemoryAccess memSrc 
)

[taint api] - Taints RegisterMemory with union. Returns true if the regDst or memSrc are TAINTED.

Definition at line 1283 of file context.cpp.

◆ taintUnion() [7/7]

bool triton::Context::taintUnion ( const triton::arch::Register regDst,
const triton::arch::Register regSrc 
)

[taint api] - Taints RegisterRegister with union. Returns true if the regDst or regSrc are TAINTED.

Definition at line 1289 of file context.cpp.

◆ untaintMemory() [1/2]

bool triton::Context::untaintMemory ( const triton::arch::MemoryAccess mem)

[taint api] - Untaints a memory. Returns !TAINTED if the memory has been untainted correctly. Otherwise it returns the last defined state.

Definition at line 1241 of file context.cpp.

◆ untaintMemory() [2/2]

bool triton::Context::untaintMemory ( triton::uint64  addr)

[taint api] - Untaints an address. Returns !TAINTED if the address has been untainted correctly. Otherwise it returns the last defined state.

Definition at line 1235 of file context.cpp.

◆ untaintRegister()

bool triton::Context::untaintRegister ( const triton::arch::Register reg)

[taint api] - Untaints a register. Returns !TAINTED if the register has been untainted correctly. Otherwise it returns the last defined state.

Definition at line 1247 of file context.cpp.

Member Data Documentation

◆ arch

triton::arch::Architecture triton::Context::arch
protected

The architecture entry.

Definition at line 71 of file context.hpp.

◆ astCtxt

triton::ast::SharedAstContext triton::Context::astCtxt
protected

The AST Context interface.

Definition at line 89 of file context.hpp.

◆ callbacks

triton::callbacks::Callbacks triton::Context::callbacks
protected

The Callbacks interface.

Definition at line 68 of file context.hpp.

◆ irBuilder

triton::arch::IrBuilder* triton::Context::irBuilder = nullptr
protected

The IR builder.

Definition at line 92 of file context.hpp.

◆ lifting

triton::engines::lifters::LiftingEngine* triton::Context::lifting = nullptr
protected

The lifting engine.

Definition at line 77 of file context.hpp.

◆ modes

triton::modes::SharedModes triton::Context::modes
protected

The modes.

Definition at line 74 of file context.hpp.

◆ registers

triton::arch::ShortcutRegister triton::Context::registers

A shortcut to access to a Register class from a register name.

Definition at line 97 of file context.hpp.

◆ solver

triton::engines::solver::SolverEngine* triton::Context::solver = nullptr
protected

The solver engine.

Definition at line 86 of file context.hpp.

◆ symbolic

triton::engines::symbolic::SymbolicEngine* triton::Context::symbolic = nullptr
protected

The symbolic engine.

Definition at line 83 of file context.hpp.

◆ taint

triton::engines::taint::TaintEngine* triton::Context::taint = nullptr
protected

The taint engine.

Definition at line 80 of file context.hpp.


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