libTriton  version 0.6 build 1372
Public Member Functions | 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 ()
 Destructor of the API.
 
TRITON_EXPORT bool isArchitectureValid (void) const
 [Architecture api] - Returns true if the architecture is valid.
 
TRITON_EXPORT triton::arch::architectures_e getArchitecture (void) const
 [architecture api] - Returns the architecture as triton::arch::architectures_e.
 
TRITON_EXPORT void checkArchitecture (void) const
 [architecture api] - Raises an exception if the architecture is not initialized.
 
TRITON_EXPORT triton::arch::CpuInterfacegetCpu (void)
 [architecture api] - Returns the CPU instance.
 
TRITON_EXPORT void setArchitecture (triton::arch::architectures_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::registers_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::registers_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::registers_e id) const
 [architecture api] - Returns Register from regId.
 
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::registers_e id) const
 [architecture api] - Returns parent Register from regId.
 
TRITON_EXPORT bool isRegisterValid (triton::arch::registers_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 triton::uint32 getRegisterBitSize (void) const
 [architecture api] - Returns the max size (in bit) of the CPU register (GPR).
 
TRITON_EXPORT triton::uint32 getRegisterSize (void) const
 [architecture api] - Returns the max size (in byte) of the CPU register (GPR).
 
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::registers_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 isMemoryMapped (triton::uint64 baseAddr, triton::usize size=1)
 [architecture api] - Returns true if the range [baseAddr:size] is mapped into the internal memory representation. More...
 
TRITON_EXPORT void unmapMemory (triton::uint64 baseAddr, triton::usize size=1)
 [architecture api] - Removes the range [baseAddr:size] from the internal memory representation. More...
 
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 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 void checkIrBuilder (void) const
 [IR builder api] - Raises an exception if the IR builder is not initialized.
 
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::AstContextgetAstContext (void)
 [IR builder api] - Returns the AST context. Used as AST builder.
 
TRITON_EXPORT void freeAllAstNodes (void)
 [AST garbage collector api] - Go through every allocated nodes and free them.
 
TRITON_EXPORT void freeAstNodes (std::set< triton::ast::AbstractNode *> &nodes)
 [AST garbage collector api] - Frees a set of nodes and removes them from the global container.
 
TRITON_EXPORT void extractUniqueAstNodes (std::set< triton::ast::AbstractNode *> &uniqueNodes, triton::ast::AbstractNode *root) const
 [AST garbage collector api] - Extracts all unique nodes from a partial AST into the uniqueNodes set.
 
TRITON_EXPORT triton::ast::AbstractNoderecordAstNode (triton::ast::AbstractNode *node)
 [AST garbage collector api] - Records the allocated node or returns the same node if it already exists inside the dictionaries.
 
TRITON_EXPORT void recordVariableAstNode (const std::string &name, triton::ast::AbstractNode *node)
 [AST garbage collector api] - Records a variable AST node.
 
TRITON_EXPORT const std::set< triton::ast::AbstractNode * > & getAllocatedAstNodes (void) const
 [AST garbage collector api] - Returns all allocated nodes.
 
TRITON_EXPORT std::map< std::string, triton::usizegetAstDictionariesStats (void) const
 [AST garbage collector api] - Returns all stats about AST Dictionaries.
 
TRITON_EXPORT const std::map< std::string, std::vector< triton::ast::AbstractNode * > > & getAstVariableNodes (void) const
 [AST garbage collector api] - Returns all variable nodes recorded.
 
TRITON_EXPORT std::vector< triton::ast::AbstractNode * > getAstVariableNode (const std::string &name) const
 [AST garbage collector api] - Returns the node of a recorded variable.
 
TRITON_EXPORT void setAllocatedAstNodes (const std::set< triton::ast::AbstractNode *> &nodes)
 [AST garbage collector api] - Sets all allocated nodes.
 
TRITON_EXPORT void setAstVariableNodes (const std::map< std::string, std::vector< triton::ast::AbstractNode *>> &nodes)
 [AST garbage collector api] - Sets all variable nodes recorded.
 
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.
 
TRITON_EXPORT void addCallback (triton::callbacks::getConcreteMemoryValueCallback cb)
 [callbacks api] - Adds a GET_CONCRETE_MEMORY_VALUE callback.
 
TRITON_EXPORT void addCallback (triton::callbacks::getConcreteRegisterValueCallback cb)
 [callbacks api] - Adds a GET_CONCRETE_REGISTER_VALUE callback.
 
TRITON_EXPORT void addCallback (triton::callbacks::symbolicSimplificationCallback cb)
 [callbacks api] - Adds a SYMBOLIC_SIMPLIFICATION callback.
 
TRITON_EXPORT void removeAllCallbacks (void)
 [callbacks api] - Removes all recorded callbacks.
 
TRITON_EXPORT void removeCallback (triton::callbacks::getConcreteMemoryValueCallback cb)
 [callbacks api] - Deletes a GET_CONCRETE_MEMORY_VALUE callback.
 
TRITON_EXPORT void removeCallback (triton::callbacks::getConcreteRegisterValueCallback cb)
 [callbacks api] - Deletes a GET_CONCRETE_REGISTER_VALUE callback.
 
TRITON_EXPORT void removeCallback (triton::callbacks::symbolicSimplificationCallback cb)
 [callbacks api] - Deletes a SYMBOLIC_SIMPLIFICATION callback.
 
TRITON_EXPORT triton::ast::AbstractNodeprocessCallbacks (triton::callbacks::callback_e kind, triton::ast::AbstractNode *node) const
 [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) const
 [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) const
 [callbacks api] - Processes callbacks according to the kind and the C++ polymorphism.
 
TRITON_EXPORT void checkModes (void) const
 [modes api] - Raises an exception if modes interface is not initialized.
 
TRITON_EXPORT void enableMode (enum triton::modes::mode_e mode, bool flag)
 [modes api] - Enables or disables a specific mode.
 
TRITON_EXPORT bool isModeEnabled (enum triton::modes::mode_e mode) const
 [modes api] - Returns true if the mode is enabled.
 
TRITON_EXPORT void checkSymbolic (void) const
 [symbolic api] - Raises an exception if the symbolic engine is not initialized.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicEnginegetSymbolicEngine (void)
 [symbolic api] - Returns the instance of the symbolic engine.
 
TRITON_EXPORT std::map< triton::arch::registers_e, triton::engines::symbolic::SymbolicExpression * > getSymbolicRegisters (void) const
 [symbolic api] - Returns the map of symbolic registers defined.
 
TRITON_EXPORT std::map< triton::uint64, triton::engines::symbolic::SymbolicExpression * > getSymbolicMemory (void) const
 [symbolic api] - Returns the map (<Addr : SymExpr>) of symbolic memory defined.
 
TRITON_EXPORT triton::usize getSymbolicMemoryId (triton::uint64 addr) const
 [symbolic api] - Returns the symbolic expression id corresponding to the memory address.
 
TRITON_EXPORT triton::usize getSymbolicRegisterId (const triton::arch::Register &reg) const
 [symbolic api] - Returns the symbolic expression id corresponding to the 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::engines::symbolic::SymbolicVariableconvertExpressionToSymbolicVariable (triton::usize exprId, triton::uint32 symVarSize, const std::string &symVarComment="")
 [symbolic api] - Converts a symbolic expression to a symbolic variable. symVarSize must be in bits.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicVariableconvertMemoryToSymbolicVariable (const triton::arch::MemoryAccess &mem, const std::string &symVarComment="")
 [symbolic api] - Converts a symbolic memory expression to a symbolic variable.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicVariableconvertRegisterToSymbolicVariable (const triton::arch::Register &reg, const std::string &symVarComment="")
 [symbolic api] - Converts a symbolic register expression to a symbolic variable.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicOperand (const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns a symbolic operand.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicOperand (triton::arch::Instruction &inst, const triton::arch::OperandWrapper &op)
 [symbolic api] - Returns a symbolic operand.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicImmediate (const triton::arch::Immediate &imm)
 [symbolic api] - Returns an immediate symbolic.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicImmediate (triton::arch::Instruction &inst, const triton::arch::Immediate &imm)
 [symbolic api] - Returns an immediate symbolic and defines the immediate as input of the instruction..
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicMemory (const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns a symbolic memory cell.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicMemory (triton::arch::Instruction &inst, const triton::arch::MemoryAccess &mem)
 [symbolic api] - Returns a symbolic memory cell and defines the memory cell as input of the instruction.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicRegister (const triton::arch::Register &reg)
 [symbolic api] - Returns a symbolic register.
 
TRITON_EXPORT triton::ast::AbstractNodebuildSymbolicRegister (triton::arch::Instruction &inst, const triton::arch::Register &reg)
 [symbolic api] - Returns a symbolic register and defines the register as input of the instruction.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressionnewSymbolicExpression (triton::ast::AbstractNode *node, const std::string &comment="")
 [symbolic api] - Returns a new symbolic expression. Note that if there are simplification passes recorded, simplification will be applied.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicVariablenewSymbolicVariable (triton::uint32 varSize, const std::string &comment="")
 [symbolic api] - Returns a new symbolic variable.
 
TRITON_EXPORT void removeSymbolicExpression (triton::usize symExprId)
 [symbolic api] - Removes the symbolic expression corresponding to the id.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressioncreateSymbolicExpression (triton::arch::Instruction &inst, triton::ast::AbstractNode *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.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressioncreateSymbolicMemoryExpression (triton::arch::Instruction &inst, triton::ast::AbstractNode *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.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressioncreateSymbolicRegisterExpression (triton::arch::Instruction &inst, triton::ast::AbstractNode *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.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressioncreateSymbolicFlagExpression (triton::arch::Instruction &inst, triton::ast::AbstractNode *node, const triton::arch::Register &flag, const std::string &comment="")
 [symbolic api] - Returns the new symbolic flag expression and links this expression to the instruction.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressioncreateSymbolicVolatileExpression (triton::arch::Instruction &inst, triton::ast::AbstractNode *node, const std::string &comment="")
 [symbolic api] - Returns the new symbolic volatile expression and links this expression to the instruction.
 
TRITON_EXPORT void assignSymbolicExpressionToMemory (triton::engines::symbolic::SymbolicExpression *se, const triton::arch::MemoryAccess &mem)
 [symbolic api] - Assigns a symbolic expression to a memory.
 
TRITON_EXPORT void assignSymbolicExpressionToRegister (triton::engines::symbolic::SymbolicExpression *se, const triton::arch::Register &reg)
 [symbolic api] - Assigns a symbolic expression to a register.
 
TRITON_EXPORT triton::ast::AbstractNodeprocessSimplification (triton::ast::AbstractNode *node, bool z3=false) const
 [symbolic api] - Processes all recorded simplifications. Returns the simplified node.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicExpressiongetSymbolicExpressionFromId (triton::usize symExprId) const
 [symbolic api] - Returns the symbolic expression corresponding to an id.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicVariablegetSymbolicVariableFromId (triton::usize symVarId) const
 [symbolic api] - Returns the symbolic variable corresponding to the symbolic variable id.
 
TRITON_EXPORT triton::engines::symbolic::SymbolicVariablegetSymbolicVariableFromName (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 triton::ast::AbstractNodegetPathConstraintsAst (void)
 [symbolic api] - Returns the logical conjunction AST of path constraints.
 
TRITON_EXPORT void addPathConstraint (const triton::arch::Instruction &inst, triton::engines::symbolic::SymbolicExpression *expr)
 [symbolic api] - Adds a path constraint.
 
TRITON_EXPORT void clearPathConstraints (void)
 [symbolic api] - Clears the logical conjunction vector of path constraints.
 
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 isSymbolicExpressionIdExists (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 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 triton::ast::AbstractNodegetAstFromId (triton::usize symExprId)
 [symbolic api] - Returns the partial AST from a symbolic expression id.
 
TRITON_EXPORT triton::ast::AbstractNodeunrollAst (triton::ast::AbstractNode *node)
 [symbolic api] - Unrolls the SSA form of a given AST.
 
TRITON_EXPORT triton::ast::AbstractNodeunrollAstFromId (triton::usize symExprId)
 [symbolic api] - Unrolls the SSA form of a given symbolic expression id.
 
TRITON_EXPORT std::map< triton::usize, triton::engines::symbolic::SymbolicExpression * > sliceExpressions (triton::engines::symbolic::SymbolicExpression *expr)
 [symbolic api] - Slices all expressions from a given one.
 
TRITON_EXPORT std::list< triton::engines::symbolic::SymbolicExpression * > getTaintedSymbolicExpressions (void) const
 [symbolic api] - Returns the list of the tainted symbolic expressions.
 
TRITON_EXPORT const std::map< triton::usize, triton::engines::symbolic::SymbolicExpression * > & getSymbolicExpressions (void) const
 [symbolic api] - Returns all symbolic expressions as a map of <SymExprId : SymExpr>
 
TRITON_EXPORT const std::map< triton::usize, triton::engines::symbolic::SymbolicVariable * > & getSymbolicVariables (void) const
 [symbolic api] - Returns all symbolic variables as a map of <SymVarId : SymVar>
 
TRITON_EXPORT const triton::uint512getConcreteSymbolicVariableValue (const triton::engines::symbolic::SymbolicVariable &symVar) const
 [symbolic api] - Gets the concrete value of a symbolic variable.
 
TRITON_EXPORT void setConcreteSymbolicVariableValue (const triton::engines::symbolic::SymbolicVariable &symVar, const triton::uint512 &value)
 [symbolic api] - Sets the concrete value of a symbolic variable.
 
TRITON_EXPORT void checkSolver (void) const
 [solver api] - Raises an exception if the solver engine is not initialized.
 
TRITON_EXPORT std::map< triton::uint32, triton::engines::solver::SolverModelgetModel (triton::ast::AbstractNode *node) const
 [solver api] - Computes and returns a model from a symbolic constraint. More...
 
TRITON_EXPORT std::list< std::map< triton::uint32, triton::engines::solver::SolverModel > > getModels (triton::ast::AbstractNode *node, triton::uint32 limit) const
 [solver api] - Computes and returns several models from a symbolic constraint. The limit is the number of models returned. More...
 
TRITON_EXPORT void checkZ3Interface (void) const
 [z3 api] - Raises an exception if the z3 interface is not initialized.
 
TRITON_EXPORT triton::uint512 evaluateAstViaZ3 (triton::ast::AbstractNode *node) const
 [z3 api] - Evaluates a Triton's AST via Z3 and returns a concrete value.
 
TRITON_EXPORT triton::ast::AbstractNodeprocessZ3Simplification (triton::ast::AbstractNode *node) const
 [z3 api] - Converts a Triton's AST to a Z3's AST, perform a Z3 simplification and returns a Triton's AST.
 
TRITON_EXPORT void checkTaint (void) const
 [taint api] - Raises an exception if the taint engine is not initialized.
 
TRITON_EXPORT triton::engines::taint::TaintEnginegetTaintEngine (void)
 [taint api] - Returns the instance of the taint engine.
 
TRITON_EXPORT const std::set< triton::uint64 > & getTaintedMemory (void) const
 [taint api] - Returns the tainted addresses.
 
TRITON_EXPORT std::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 taintAssignment (const triton::arch::OperandWrapper &op1, const triton::arch::OperandWrapper &op2)
 [taint api] - Abstract assignment tainting.
 
TRITON_EXPORT bool taintUnionMemoryImmediate (const triton::arch::MemoryAccess &memDst)
 [taint api] - Taints MemoryImmediate with union. Returns true if the memDst is TAINTED.
 
TRITON_EXPORT bool taintUnionMemoryMemory (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 taintUnionMemoryRegister (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 taintUnionRegisterImmediate (const triton::arch::Register &regDst)
 [taint api] - Taints RegisterImmediate with union. Returns true if the regDst is TAINTED.
 
TRITON_EXPORT bool taintUnionRegisterMemory (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 taintUnionRegisterRegister (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 taintAssignmentMemoryImmediate (const triton::arch::MemoryAccess &memDst)
 [taint api] - Taints MemoryImmediate with assignment. Returns always false.
 
TRITON_EXPORT bool taintAssignmentMemoryMemory (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 taintAssignmentMemoryRegister (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 taintAssignmentRegisterImmediate (const triton::arch::Register &regDst)
 [taint api] - Taints RegisterImmediate with assignment. Returns always false.
 
TRITON_EXPORT bool taintAssignmentRegisterMemory (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 taintAssignmentRegisterRegister (const triton::arch::Register &regDst, const triton::arch::Register &regSrc)
 [taint api] - Taints RegisterRegister with assignment. Returns true if the regDst is tainted.
 

Protected Attributes

triton::callbacks::Callbacks callbacks
 The Callbacks interface.
 
triton::arch::Architecture arch
 The architecture entry.
 
triton::modes::Modes 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::AstContext astCtxt
 The AST Context interface.
 
triton::arch::IrBuilderirBuilder = nullptr
 The IR builder.
 
triton::ast::Z3Interfacez3Interface = nullptr
 The Z3 interface between Triton and Z3.
 

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 467 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 384 of file api.cpp.

◆ getAllRegisters()

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

[architecture api] - Returns all registers.

See also
triton::arch::x86::registers_e.

Definition at line 306 of file api.cpp.

◆ getModel()

std::map< triton::uint32, triton::engines::solver::SolverModel > triton::API::getModel ( triton::ast::AbstractNode node) const

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

item1: symbolic variable id
item2: model

Definition at line 990 of file api.cpp.

◆ getModels()

std::list< std::map< triton::uint32, triton::engines::solver::SolverModel > > triton::API::getModels ( triton::ast::AbstractNode node,
triton::uint32  limit 
) 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 996 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::registers_e.

Definition at line 312 of file api.cpp.

◆ isFlag()

bool triton::API::isFlag ( triton::arch::registers_e  regId) const

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

See also
triton::arch::x86::registers_e.

Definition at line 246 of file api.cpp.

◆ isMemoryMapped()

bool triton::API::isMemoryMapped ( triton::uint64  baseAddr,
triton::usize  size = 1 
)

[architecture api] - Returns true if the range [baseAddr:size] is mapped into the internal memory representation.

See also
getConcreteMemoryValue() and getConcreteMemoryAreaValue().

Definition at line 372 of file api.cpp.

◆ isRegister()

bool triton::API::isRegister ( triton::arch::registers_e  regId) const

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

See also
triton::arch::x86::registers_e.

Definition at line 256 of file api.cpp.

◆ isRegisterValid()

bool triton::API::isRegisterValid ( triton::arch::registers_e  regId) const

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

See also
triton::arch::x86::registers_e.

Definition at line 281 of file api.cpp.

◆ setArchitecture()

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

[architecture api] - Initializes an architecture.

See also
triton::arch::architectures_e.

Definition at line 230 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 354 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 360 of file api.cpp.

◆ setConcreteMemoryValue() [1/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 342 of file api.cpp.

◆ setConcreteMemoryValue() [2/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 348 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 366 of file api.cpp.

◆ unmapMemory()

void triton::API::unmapMemory ( triton::uint64  baseAddr,
triton::usize  size = 1 
)

[architecture api] - Removes the range [baseAddr:size] from the internal memory representation.

See also
isMemoryMapped().

Definition at line 378 of file api.cpp.


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