libTriton  version 0.9 build 1502
Public Member Functions | Public Attributes | Protected Attributes | List of all members
triton::API Class Reference

This is used as C++ API. More...

#include <api.hpp>

Public Member Functions

TRITON_EXPORT API ()
 Constructor of the API.
 
TRITON_EXPORT API (triton::arch::architecture_e arch)
 Constructor of the API.
 
TRITON_EXPORT ~API ()
 Destructor of the API.
 
TRITON_EXPORT bool isArchitectureValid (void) const
 [Architecture api] - Returns true if the architecture is valid.
 
TRITON_EXPORT triton::arch::architecture_e getArchitecture (void) const
 [architecture api] - Returns the architecture as triton::arch::architecture_e.
 
TRITON_EXPORT triton::arch::endianness_e getEndianness (void) const
 [architecture api] - Returns the endianness as triton::arch::endianness_e.
 
TRITON_EXPORT triton::arch::CpuInterfacegetCpuInstance (void)
 [architecture api] - Returns the instance of the current CPU used.
 
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).
 
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.
 
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.
 
TRITON_EXPORT const triton::arch::RegistergetRegister (triton::arch::register_e id) const
 [architecture api] - Returns Register from regId.
 
TRITON_EXPORT const triton::arch::RegistergetRegister (const std::string &name) const
 [architecture api] - Returns Register from its name.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (const triton::arch::Register &reg) const
 [architecture api] - Returns parent Register from a register.
 
TRITON_EXPORT const triton::arch::RegistergetParentRegister (triton::arch::register_e id) const
 [architecture api] - Returns parent Register from regId.
 
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.
 
TRITON_EXPORT bool isThumb (void) const
 [architecture api] - Returns true if the execution mode is Thumb. Only useful for Arm32.
 
TRITON_EXPORT void setThumb (bool state)
 [architecture api] - Sets CPU state to Thumb mode.
 
TRITON_EXPORT triton::uint32 getGprBitSize (void) const
 [architecture api] - Returns the bit in byte of the General Purpose Registers.
 
TRITON_EXPORT triton::uint32 getGprSize (void) const
 [architecture api] - Returns the size in byte of the General Purpose Registers.
 
TRITON_EXPORT triton::uint32 getNumberOfRegisters (void) const
 [architecture api] - Returns the number of registers according to the CPU architecture.
 
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.
 
TRITON_EXPORT triton::uint512 getConcreteMemoryValue (const triton::arch::MemoryAccess &mem, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of memory cells.
 
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.
 
TRITON_EXPORT triton::uint512 getConcreteRegisterValue (const triton::arch::Register &reg, bool execCallbacks=true) const
 [architecture api] - Returns the concrete value of a register.
 
TRITON_EXPORT void setConcreteMemoryValue (triton::uint64 addr, triton::uint8 value)
 [architecture api] - Sets the concrete value of a memory cell. More...
 
TRITON_EXPORT void setConcreteMemoryValue (const triton::arch::MemoryAccess &mem, const triton::uint512 &value)
 [architecture api] - Sets the concrete value of memory cells. More...
 
TRITON_EXPORT void setConcreteMemoryAreaValue (triton::uint64 baseAddr, const std::vector< triton::uint8 > &values)
 [architecture api] - Sets the concrete value of a memory area. More...
 
TRITON_EXPORT void setConcreteMemoryAreaValue (triton::uint64 baseAddr, const triton::uint8 *area, triton::usize size)
 [architecture api] - Sets the concrete value of a memory area. More...
 
TRITON_EXPORT void setConcreteRegisterValue (const triton::arch::Register &reg, const triton::uint512 &value)
 [architecture api] - Sets the concrete value of a register. More...
 
TRITON_EXPORT bool isConcreteMemoryValueDefined (const triton::arch::MemoryAccess &mem) const
 Returns true if memory cells have a defined concrete value.
 
TRITON_EXPORT bool isConcreteMemoryValueDefined (triton::uint64 baseAddr, triton::usize size=1) const
 Returns true if memory cells have a defined concrete value.
 
TRITON_EXPORT void clearConcreteMemoryValue (const triton::arch::MemoryAccess &mem)
 Clears concrete values assigned to the memory cells.
 
TRITON_EXPORT void clearConcreteMemoryValue (triton::uint64 baseAddr, triton::usize size=1)
 Clears concrete values assigned to the memory cells.
 
TRITON_EXPORT void disassembly (triton::arch::Instruction &inst) const
 [architecture api] - Disassembles the instruction and setup operands. 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.
 
TRITON_EXPORT std::vector< triton::arch::Instructiondisassembly (triton::uint64 addr) const
 [architecture api] - Disassembles a concrete memory area from addr to control flow instruction and returns a list of disassembled instructions.
 
TRITON_EXPORT bool processing (triton::arch::Instruction &inst)
 [proccesing api] - Processes an instruction and updates engines according to the instruction semantics. Returns true if the instruction is supported.
 
TRITON_EXPORT void initEngines (void)
 [proccesing api] - Initializes everything.
 
TRITON_EXPORT void removeEngines (void)
 [proccesing api] - Removes everything.
 
TRITON_EXPORT void reset (void)
 [proccesing api] - Resets everything.
 
TRITON_EXPORT bool buildSemantics (triton::arch::Instruction &inst)
 [IR builder api] - Builds the instruction semantics. Returns true if the instruction is supported. You must define an architecture before. More...
 
TRITON_EXPORT triton::ast::SharedAstContext getAstContext (void)
 [IR builder api] - Returns the AST context. Used as AST builder.
 
TRITON_EXPORT triton::uint32 getAstRepresentationMode (void) const
 [AST representation api] - Returns the AST representation mode as triton::ast::representations::mode_e.
 
TRITON_EXPORT void setAstRepresentationMode (triton::uint32 mode)
 [AST representation api] - Sets the AST representation mode.
 
template<typename T >
void addCallback (triton::callbacks::callback_e kind, T cb)
 [callbacks api] - Adds a callback.
 
template<typename T >
void removeCallback (triton::callbacks::callback_e kind, T cb)
 [callbacks api] - Removes a callback.
 
TRITON_EXPORT void clearCallbacks (void)
 [callbacks api] - Clears recorded callbacks.
 
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.
 
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.
 
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.
 
TRITON_EXPORT void setMode (triton::modes::mode_e mode, bool flag)
 [modes api] - Enables or disables a specific mode.
 
TRITON_EXPORT bool isModeEnabled (triton::modes::mode_e mode) const
 [modes api] - Returns true if the mode is enabled.
 
TRITON_EXPORT void clearModes (void)
 [modes api] - Clears recorded modes.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicEnginegetSymbolicEngine (void)
 [symbolic api] - Returns the instance of the symbolic engine.
 
TRITON_EXPORT std::unordered_map< triton::arch::register_e, triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicRegisters (void) const
 [symbolic api] - Returns the map of symbolic registers defined.
 
TRITON_EXPORT std::unordered_map< triton::uint64, triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicMemory (void) const
 [symbolic api] - Returns the map (<Addr : SymExpr>) of symbolic memory defined.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression getSymbolicMemory (triton::uint64 addr) const
 [symbolic api] - Returns the shared symbolic expression corresponding to the memory address.
 
TRITON_EXPORT const triton::engines::symbolic::SharedSymbolicExpressiongetSymbolicRegister (const triton::arch::Register &reg) const
 [symbolic api] - Returns the shared symbolic expression corresponding to the parent register.
 
TRITON_EXPORT triton::uint8 getSymbolicMemoryValue (triton::uint64 address)
 [symbolic api] - Returns the symbolic memory value.
 
TRITON_EXPORT triton::uint512 getSymbolicMemoryValue (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns the symbolic memory value.
 
TRITON_EXPORT std::vector< triton::uint8getSymbolicMemoryAreaValue (triton::uint64 baseAddr, triton::usize size)
 [symbolic api] - Returns the symbolic values of a memory area.
 
TRITON_EXPORT triton::uint512 getSymbolicRegisterValue (const triton::arch::Register &reg)
 [symbolic api] - Returns the symbolic register value.
 
TRITON_EXPORT triton::ast::SharedAbstractNode getOperandAst (const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns the AST corresponding to the operand.
 
TRITON_EXPORT triton::ast::SharedAbstractNode getOperandAst (triton::arch::Instruction &inst, const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns the AST corresponding to the operand.
 
TRITON_EXPORT triton::ast::SharedAbstractNode getImmediateAst (const triton::arch::Immediate &imm)
 [symbolic api] - Returns the AST corresponding to the immediate.
 
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..
 
TRITON_EXPORT triton::ast::SharedAbstractNode getMemoryAst (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns the AST corresponding to the memory.
 
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.
 
TRITON_EXPORT triton::ast::SharedAbstractNode getRegisterAst (const triton::arch::Register &reg)
 [symbolic api] - Returns the AST corresponding to the register.
 
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.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression newSymbolicExpression (const triton::ast::SharedAbstractNode &node, const std::string &comment="")
 [symbolic api] - Returns a new shared symbolic expression. Note that if there are simplification passes recorded, simplification will be applied.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable newSymbolicVariable (triton::uint32 varSize, const std::string &alias="")
 [symbolic api] - Returns a new symbolic variable.
 
TRITON_EXPORT void removeSymbolicExpression (const triton::engines::symbolic::SharedSymbolicExpression &expr)
 [symbolic api] - Removes the symbolic expression corresponding to the id.
 
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 shared symbolic abstract expression and links this expression to the instruction.
 
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 shared symbolic memory expression and links this expression to the instruction.
 
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 shared symbolic register expression and links this expression to the instruction.
 
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 shared symbolic volatile expression and links this expression to the instruction.
 
TRITON_EXPORT void assignSymbolicExpressionToMemory (const triton::engines::symbolic::SharedSymbolicExpression &se, const triton::arch::MemoryAccess &mem)
 [symbolic api] - Assigns a symbolic expression to a memory.
 
TRITON_EXPORT void assignSymbolicExpressionToRegister (const triton::engines::symbolic::SharedSymbolicExpression &se, const triton::arch::Register &reg)
 [symbolic api] - Assigns a symbolic expression to a register.
 
TRITON_EXPORT triton::ast::SharedAbstractNode processSimplification (const triton::ast::SharedAbstractNode &node, bool z3=false) const
 [symbolic api] - Processes all recorded simplifications. Returns the simplified node.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicExpression getSymbolicExpression (triton::usize symExprId) const
 [symbolic api] - Returns the shared symbolic expression corresponding to an id.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable getSymbolicVariable (triton::usize symVarId) const
 [symbolic api] - Returns the symbolic variable corresponding to the symbolic variable id.
 
TRITON_EXPORT triton::engines::symbolic::SharedSymbolicVariable getSymbolicVariable (const std::string &symVarName) const
 [symbolic api] - Returns the symbolic variable corresponding to the symbolic variable name.
 
TRITON_EXPORT const std::vector< triton::engines::symbolic::PathConstraint > & getPathConstraints (void) const
 [symbolic api] - Returns the logical conjunction vector of path constraints.
 
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.
 
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.
 
TRITON_EXPORT triton::ast::SharedAbstractNode getPathPredicate (void)
 [symbolic api] - Returns the current path predicate as an AST of logical conjunction of each taken branch.
 
TRITON_EXPORT std::vector< triton::ast::SharedAbstractNodegetPredicatesToReachAddress (triton::uint64 addr)
 [symbolic api] - Returns path predicates which may reach the targeted address.
 
TRITON_EXPORT triton::usize getSizeOfPathConstraints (void) const
 [symbolic api] - Returns the size of the path constraints
 
TRITON_EXPORT void pushPathConstraint (const triton::ast::SharedAbstractNode &node)
 [symbolic api] - Pushes constraint created from node to the current path predicate.
 
TRITON_EXPORT void pushPathConstraint (const triton::engines::symbolic::PathConstraint &pco)
 [symbolic api] - Pushes constraint to the current path predicate.
 
TRITON_EXPORT void popPathConstraint (void)
 [symbolic api] - Pops the last constraints added to the path predicate.
 
TRITON_EXPORT void clearPathConstraints (void)
 [symbolic api] - Clears the current path predicate.
 
TRITON_EXPORT void enableSymbolicEngine (bool flag)
 [symbolic api] - Enables or disables the symbolic execution engine.
 
TRITON_EXPORT bool isSymbolicEngineEnabled (void) const
 [symbolic api] - Returns true if the symbolic execution engine is enabled.
 
TRITON_EXPORT bool isSymbolicExpressionExists (triton::usize symExprId) const
 [symbolic api] - Returns true if the symbolic expression ID exists.
 
TRITON_EXPORT bool isMemorySymbolized (const triton::arch::MemoryAccess &mem) const
 [symbolic api] - Returns true if memory cell expressions contain symbolic variables.
 
TRITON_EXPORT bool isMemorySymbolized (triton::uint64 addr, triton::uint32 size=1) const
 [symbolic api] - Returns true if memory cell expressions contain symbolic variables.
 
TRITON_EXPORT bool isRegisterSymbolized (const triton::arch::Register &reg) const
 [symbolic api] - Returns true if the register expression contains a symbolic variable.
 
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.
 
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.
 
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.
 
TRITON_EXPORT void concretizeAllMemory (void)
 [symbolic api] - Concretizes all symbolic memory references.
 
TRITON_EXPORT void concretizeAllRegister (void)
 [symbolic api] - Concretizes all symbolic register references.
 
TRITON_EXPORT void concretizeMemory (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Concretizes a specific symbolic memory reference.
 
TRITON_EXPORT void concretizeMemory (triton::uint64 addr)
 [symbolic api] - Concretizes a specific symbolic memory reference.
 
TRITON_EXPORT void concretizeRegister (const triton::arch::Register &reg)
 [symbolic api] - Concretizes a specific symbolic register reference.
 
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.
 
TRITON_EXPORT std::ostream & printSlicedExpressions (std::ostream &stream, const triton::engines::symbolic::SharedSymbolicExpression &expr, bool assert_=false)
 [symbolic api] - Prints symbolic expression with used references and symbolic variables in AST representation mode. If assert_ is true, then (assert <expr>).
 
TRITON_EXPORT std::vector< triton::engines::symbolic::SharedSymbolicExpressiongetTaintedSymbolicExpressions (void) const
 [symbolic api] - Returns the list of the tainted symbolic expressions.
 
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>
 
TRITON_EXPORT std::unordered_map< triton::usize, triton::engines::symbolic::SharedSymbolicVariablegetSymbolicVariables (void) const
 [symbolic api] - Returns all symbolic variables as a map of <SymVarId : SymVar>
 
TRITON_EXPORT triton::uint512 getConcreteVariableValue (const triton::engines::symbolic::SharedSymbolicVariable &symVar) const
 [symbolic api] - Gets the concrete value of a symbolic variable.
 
TRITON_EXPORT void setConcreteVariableValue (const triton::engines::symbolic::SharedSymbolicVariable &symVar, const triton::uint512 &value)
 [symbolic api] - Sets the concrete value of a symbolic variable.
 
TRITON_EXPORT std::unordered_map< triton::usize, triton::engines::solver::SolverModelgetModel (const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr) const
 [solver api] - Computes and returns a model from a symbolic constraint. 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) const
 [solver api] - Computes and returns several models from a symbolic constraint. The limit is the number of models returned. More...
 
TRITON_EXPORT bool isSat (const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr) const
 Returns true if an expression is satisfiable.
 
TRITON_EXPORT triton::engines::solver::solver_e getSolver (void) const
 Returns the kind of solver as triton::engines::solver::solver_e.
 
TRITON_EXPORT const triton::engines::solver::SolverInterfacegetSolverInstance (void) const
 Returns the instance of the initialized solver.
 
TRITON_EXPORT void setSolver (triton::engines::solver::solver_e kind)
 Initializes a predefined solver.
 
TRITON_EXPORT void setCustomSolver (triton::engines::solver::SolverInterface *customSolver)
 Initializes a custom solver.
 
TRITON_EXPORT bool isSolverValid (void) const
 Returns true if the solver is valid.
 
TRITON_EXPORT triton::uint512 evaluateAstViaZ3 (const triton::ast::SharedAbstractNode &node) const
 [solver api] - Evaluates a Triton's AST via Z3 and returns a concrete value.
 
TRITON_EXPORT triton::ast::SharedAbstractNode processZ3Simplification (const triton::ast::SharedAbstractNode &node) const
 [solver api] - Converts a Triton's AST to a Z3's AST, perform a Z3 simplification and returns a Triton's AST.
 
TRITON_EXPORT void setSolverTimeout (triton::uint32 ms)
 [solver api] - Defines a solver timeout (in milliseconds).
 
TRITON_EXPORT void setSolverMemoryLimit (triton::uint32 limit)
 [solver api] - Defines a solver memory consumption limit (in megabytes).
 
TRITON_EXPORT triton::engines::taint::TaintEnginegetTaintEngine (void)
 [taint api] - Returns the instance of the taint engine.
 
TRITON_EXPORT const std::unordered_set< triton::uint64 > & getTaintedMemory (void) const
 [taint api] - Returns the tainted addresses.
 
TRITON_EXPORT std::unordered_set< const triton::arch::Register * > getTaintedRegisters (void) const
 [taint api] - Returns the tainted registers.
 
TRITON_EXPORT void enableTaintEngine (bool flag)
 [taint api] - Enables or disables the taint engine.
 
TRITON_EXPORT bool isTaintEngineEnabled (void) const
 [taint api] - Returns true if the taint engine is enabled.
 
TRITON_EXPORT bool isTainted (const triton::arch::OperandWrapper &op) const
 [taint api] - Abstract taint verification. Returns true if the operand is tainted.
 
TRITON_EXPORT bool isMemoryTainted (triton::uint64 addr, triton::uint32 size=1) const
 [taint api] - Returns true if the address:size is tainted.
 
TRITON_EXPORT bool isMemoryTainted (const triton::arch::MemoryAccess &mem) const
 [taint api] - Returns true if the memory is tainted.
 
TRITON_EXPORT bool isRegisterTainted (const triton::arch::Register &reg) const
 [taint api] - Returns true if the register is tainted.
 
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).
 
TRITON_EXPORT bool setTaintMemory (const triton::arch::MemoryAccess &mem, bool flag)
 [taint api] - Sets the flag (taint or untaint) to a memory.
 
TRITON_EXPORT bool setTaintRegister (const triton::arch::Register &reg, bool flag)
 [taint api] - Sets the flag (taint or untaint) to a register.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
TRITON_EXPORT bool taintUnion (const triton::arch::OperandWrapper &op1, const triton::arch::OperandWrapper &op2)
 [taint api] - Abstract union tainting.
 
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.
 
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.
 
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.
 
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.
 
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.
 
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.
 
TRITON_EXPORT bool taintAssignment (const triton::arch::OperandWrapper &op1, const triton::arch::OperandWrapper &op2)
 [taint api] - Abstract assignment tainting.
 
TRITON_EXPORT bool taintAssignment (const triton::arch::MemoryAccess &memDst, const triton::arch::Immediate &imm)
 [taint api] - Taints MemoryImmediate with assignment. Returns always false.
 
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.
 
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.
 
TRITON_EXPORT bool taintAssignment (const triton::arch::Register &regDst, const triton::arch::Immediate &imm)
 [taint api] - Taints RegisterImmediate with assignment. Returns always false.
 
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.
 
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.
 

Public Attributes

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

Protected Attributes

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

Detailed Description

This is used as C++ API.

Definition at line 42 of file api.hpp.

Member Function Documentation

◆ buildSemantics()

bool triton::API::buildSemantics ( triton::arch::Instruction inst)

[IR builder api] - Builds the instruction semantics. Returns true if the instruction is supported. You must define an architecture before.

See also
processing().

Definition at line 601 of file api.cpp.

◆ disassembly()

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

[architecture api] - Disassembles the instruction and setup operands. You must define an architecture before.

See also
processing().

Definition at line 513 of file api.cpp.

◆ getAllRegisters()

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

[architecture api] - Returns all registers.

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

Definition at line 394 of file api.cpp.

◆ getModel()

std::unordered_map< triton::usize, triton::engines::solver::SolverModel > triton::API::getModel ( const triton::ast::SharedAbstractNode node,
triton::engines::solver::status_e status = nullptr 
) const

[solver api] - Computes and returns a model from a symbolic constraint.

item1: symbolic variable id
item2: model

Definition at line 1092 of file api.cpp.

◆ getModels()

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

[solver api] - Computes and returns several models from a symbolic constraint. The limit is the number of models returned.

item1: symbolic variable id
item2: model

Definition at line 1098 of file api.cpp.

◆ getParentRegisters()

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

[architecture api] - Returns all parent registers.

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

Definition at line 400 of file api.cpp.

◆ isFlag()

bool triton::API::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 319 of file api.cpp.

◆ isRegister()

bool triton::API::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 329 of file api.cpp.

◆ isRegisterValid()

bool triton::API::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 359 of file api.cpp.

◆ setArchitecture()

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

[architecture api] - Initializes an architecture.

See also
triton::arch::architecture_e.

Definition at line 303 of file api.cpp.

◆ setConcreteMemoryAreaValue() [1/2]

void triton::API::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const std::vector< triton::uint8 > &  values 
)

[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 452 of file api.cpp.

◆ setConcreteMemoryAreaValue() [2/2]

void triton::API::setConcreteMemoryAreaValue ( triton::uint64  baseAddr,
const triton::uint8 area,
triton::usize  size 
)

[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 465 of file api.cpp.

◆ setConcreteMemoryValue() [1/2]

void triton::API::setConcreteMemoryValue ( const triton::arch::MemoryAccess mem,
const triton::uint512 value 
)

[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 441 of file api.cpp.

◆ setConcreteMemoryValue() [2/2]

void triton::API::setConcreteMemoryValue ( triton::uint64  addr,
triton::uint8  value 
)

[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 430 of file api.cpp.

◆ setConcreteRegisterValue()

void triton::API::setConcreteRegisterValue ( const triton::arch::Register reg,
const triton::uint512 value 
)

[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 478 of file api.cpp.


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