Beispiel #1
0
void initOperandEnv(PyObject *idOperandClassDict) {
  PyDict_SetItemString(idOperandClassDict, "IMM",   PyLong_FromUint(IRBuilderOperand::IMM));
  PyDict_SetItemString(idOperandClassDict, "LEA",   PyLong_FromUint(IRBuilderOperand::LEA));
  PyDict_SetItemString(idOperandClassDict, "MEM_R", PyLong_FromUint(IRBuilderOperand::MEM_R));
  PyDict_SetItemString(idOperandClassDict, "MEM_W", PyLong_FromUint(IRBuilderOperand::MEM_W));
  PyDict_SetItemString(idOperandClassDict, "REG",   PyLong_FromUint(IRBuilderOperand::REG));
}
      void initX86PrefixesNamespace(void) {
        if (!triton::bindings::python::initialized)
          return;

        PyDict_Clear(triton::bindings::python::prefixesDict);

        PyDict_SetItemString(triton::bindings::python::prefixesDict, "INVALID", PyLong_FromUint(triton::arch::x86::ID_PREFIX_INVALID));
        PyDict_SetItemString(triton::bindings::python::prefixesDict, "LOCK",    PyLong_FromUint(triton::arch::x86::ID_PREFIX_LOCK));
        PyDict_SetItemString(triton::bindings::python::prefixesDict, "REP",     PyLong_FromUint(triton::arch::x86::ID_PREFIX_REP));
        PyDict_SetItemString(triton::bindings::python::prefixesDict, "REPE",    PyLong_FromUint(triton::arch::x86::ID_PREFIX_REPE));
        PyDict_SetItemString(triton::bindings::python::prefixesDict, "REPNE",   PyLong_FromUint(triton::arch::x86::ID_PREFIX_REPNE));
      }
Beispiel #3
0
void initFlagEnv(PyObject *idFlagClassDict) {
  PyDict_SetItemString(idFlagClassDict, "AF", PyLong_FromUint(ID_AF));
  PyDict_SetItemString(idFlagClassDict, "CF", PyLong_FromUint(ID_CF));
  PyDict_SetItemString(idFlagClassDict, "DF", PyLong_FromUint(ID_DF));
  PyDict_SetItemString(idFlagClassDict, "IF", PyLong_FromUint(ID_IF));
  PyDict_SetItemString(idFlagClassDict, "OF", PyLong_FromUint(ID_OF));
  PyDict_SetItemString(idFlagClassDict, "PF", PyLong_FromUint(ID_PF));
  PyDict_SetItemString(idFlagClassDict, "SF", PyLong_FromUint(ID_SF));
  PyDict_SetItemString(idFlagClassDict, "TF", PyLong_FromUint(ID_TF));
  PyDict_SetItemString(idFlagClassDict, "ZF", PyLong_FromUint(ID_ZF));
}
Beispiel #4
0
 static PyObject* MemoryOperand_getAddress(PyObject* self, PyObject* noarg) {
   try {
     return PyLong_FromUint(PyMemoryOperand_AsMemoryOperand(self)->getAddress());
   }
   catch (const std::exception& e) {
     return PyErr_Format(PyExc_TypeError, "%s", e.what());
   }
 }
Beispiel #5
0
 static PyObject* PathConstraint_getTakenAddress(PyObject* self, PyObject* noarg) {
   try {
     return PyLong_FromUint(PyPathConstraint_AsPathConstraint(self)->getTakenAddress());
   }
   catch (const std::exception& e) {
     return PyErr_Format(PyExc_TypeError, "%s", e.what());
   }
 }
Beispiel #6
0
      static PyObject* PathConstraint_getBranchConstraints(PyObject* self, PyObject* noarg) {
        try {
          PyObject* ret = nullptr;
          std::vector<std::tuple<bool, triton::__uint, triton::ast::AbstractNode*>>& branches = PyPathConstraint_AsPathConstraint(self)->getBranchConstraints();

          ret = xPyList_New(branches.size());
          for (triton::uint32 index = 0; index != branches.size(); index++) {
            PyObject* dict = xPyDict_New();
            PyDict_SetItem(dict, PyString_FromString("taken"),      PyBool_FromLong(std::get<0>(branches[index])));
            PyDict_SetItem(dict, PyString_FromString("target"),     PyLong_FromUint(std::get<1>(branches[index])));
            PyDict_SetItem(dict, PyString_FromString("constraint"), PyAstNode(std::get<2>(branches[index])));
            PyList_SetItem(ret, index, dict);
          }

          return ret;
        }
        catch (const std::exception& e) {
          return PyErr_Format(PyExc_TypeError, "%s", e.what());
        }
      }
Beispiel #7
0
 static PyObject* SymbolicVariable_getKindValue(PyObject* self, PyObject* noarg) {
   return PyLong_FromUint(PySymbolicVariable_AsSymbolicVariable(self)->getSymVarKindValue());
 }
 void initAstNodeNamespace(PyObject* astNodeDict) {
   PyDict_SetItemString(astNodeDict, "ASSERT",            PyLong_FromUint(triton::ast::ASSERT_NODE));
   PyDict_SetItemString(astNodeDict, "BV",                PyLong_FromUint(triton::ast::BV_NODE));
   PyDict_SetItemString(astNodeDict, "BVADD",             PyLong_FromUint(triton::ast::BVADD_NODE));
   PyDict_SetItemString(astNodeDict, "BVAND",             PyLong_FromUint(triton::ast::BVAND_NODE));
   PyDict_SetItemString(astNodeDict, "BVASHR",            PyLong_FromUint(triton::ast::BVASHR_NODE));
   PyDict_SetItemString(astNodeDict, "BVDECL",            PyLong_FromUint(triton::ast::BVDECL_NODE));
   PyDict_SetItemString(astNodeDict, "BVLSHR",            PyLong_FromUint(triton::ast::BVLSHR_NODE));
   PyDict_SetItemString(astNodeDict, "BVMUL",             PyLong_FromUint(triton::ast::BVMUL_NODE));
   PyDict_SetItemString(astNodeDict, "BVNAND",            PyLong_FromUint(triton::ast::BVNAND_NODE));
   PyDict_SetItemString(astNodeDict, "BVNEG",             PyLong_FromUint(triton::ast::BVNEG_NODE));
   PyDict_SetItemString(astNodeDict, "BVNOR",             PyLong_FromUint(triton::ast::BVNOR_NODE));
   PyDict_SetItemString(astNodeDict, "BVNOT",             PyLong_FromUint(triton::ast::BVNOT_NODE));
   PyDict_SetItemString(astNodeDict, "BVOR",              PyLong_FromUint(triton::ast::BVOR_NODE));
   PyDict_SetItemString(astNodeDict, "BVROL",             PyLong_FromUint(triton::ast::BVROL_NODE));
   PyDict_SetItemString(astNodeDict, "BVROR",             PyLong_FromUint(triton::ast::BVROR_NODE));
   PyDict_SetItemString(astNodeDict, "BVSDIV",            PyLong_FromUint(triton::ast::BVSDIV_NODE));
   PyDict_SetItemString(astNodeDict, "BVSGE",             PyLong_FromUint(triton::ast::BVSGE_NODE));
   PyDict_SetItemString(astNodeDict, "BVSGT",             PyLong_FromUint(triton::ast::BVSGT_NODE));
   PyDict_SetItemString(astNodeDict, "BVSHL",             PyLong_FromUint(triton::ast::BVSHL_NODE));
   PyDict_SetItemString(astNodeDict, "BVSLE",             PyLong_FromUint(triton::ast::BVSLE_NODE));
   PyDict_SetItemString(astNodeDict, "BVSLT",             PyLong_FromUint(triton::ast::BVSLT_NODE));
   PyDict_SetItemString(astNodeDict, "BVSMOD",            PyLong_FromUint(triton::ast::BVSMOD_NODE));
   PyDict_SetItemString(astNodeDict, "BVSREM",            PyLong_FromUint(triton::ast::BVSREM_NODE));
   PyDict_SetItemString(astNodeDict, "BVSUB",             PyLong_FromUint(triton::ast::BVSUB_NODE));
   PyDict_SetItemString(astNodeDict, "BVUDIV",            PyLong_FromUint(triton::ast::BVUDIV_NODE));
   PyDict_SetItemString(astNodeDict, "BVUGE",             PyLong_FromUint(triton::ast::BVUGE_NODE));
   PyDict_SetItemString(astNodeDict, "BVUGT",             PyLong_FromUint(triton::ast::BVUGT_NODE));
   PyDict_SetItemString(astNodeDict, "BVULE",             PyLong_FromUint(triton::ast::BVULE_NODE));
   PyDict_SetItemString(astNodeDict, "BVULT",             PyLong_FromUint(triton::ast::BVULT_NODE));
   PyDict_SetItemString(astNodeDict, "BVUREM",            PyLong_FromUint(triton::ast::BVUREM_NODE));
   PyDict_SetItemString(astNodeDict, "BVXNOR",            PyLong_FromUint(triton::ast::BVXNOR_NODE));
   PyDict_SetItemString(astNodeDict, "BVXOR",             PyLong_FromUint(triton::ast::BVXOR_NODE));
   PyDict_SetItemString(astNodeDict, "COMPOUND",          PyLong_FromUint(triton::ast::COMPOUND_NODE));
   PyDict_SetItemString(astNodeDict, "CONCAT",            PyLong_FromUint(triton::ast::CONCAT_NODE));
   PyDict_SetItemString(astNodeDict, "DECIMAL",           PyLong_FromUint(triton::ast::DECIMAL_NODE));
   PyDict_SetItemString(astNodeDict, "DECLARE_FUNCTION",  PyLong_FromUint(triton::ast::DECLARE_FUNCTION_NODE));
   PyDict_SetItemString(astNodeDict, "DISTINCT",          PyLong_FromUint(triton::ast::DISTINCT_NODE));
   PyDict_SetItemString(astNodeDict, "EQUAL",             PyLong_FromUint(triton::ast::EQUAL_NODE));
   PyDict_SetItemString(astNodeDict, "EXTRACT",           PyLong_FromUint(triton::ast::EXTRACT_NODE));
   PyDict_SetItemString(astNodeDict, "FUNCTION",          PyLong_FromUint(triton::ast::FUNCTION_NODE));
   PyDict_SetItemString(astNodeDict, "ITE",               PyLong_FromUint(triton::ast::ITE_NODE));
   PyDict_SetItemString(astNodeDict, "LAND",              PyLong_FromUint(triton::ast::LAND_NODE));
   PyDict_SetItemString(astNodeDict, "LET",               PyLong_FromUint(triton::ast::LET_NODE));
   PyDict_SetItemString(astNodeDict, "LNOT",              PyLong_FromUint(triton::ast::LNOT_NODE));
   PyDict_SetItemString(astNodeDict, "LOR",               PyLong_FromUint(triton::ast::LOR_NODE));
   PyDict_SetItemString(astNodeDict, "PARAM",             PyLong_FromUint(triton::ast::PARAM_NODE));
   PyDict_SetItemString(astNodeDict, "REFERENCE",         PyLong_FromUint(triton::ast::REFERENCE_NODE));
   PyDict_SetItemString(astNodeDict, "STRING",            PyLong_FromUint(triton::ast::STRING_NODE));
   PyDict_SetItemString(astNodeDict, "SX",                PyLong_FromUint(triton::ast::SX_NODE));
   PyDict_SetItemString(astNodeDict, "UNDEFINED",         PyLong_FromUint(triton::ast::UNDEFINED_NODE));
   PyDict_SetItemString(astNodeDict, "VARIABLE",          PyLong_FromUint(triton::ast::VARIABLE_NODE));
   PyDict_SetItemString(astNodeDict, "ZX",                PyLong_FromUint(triton::ast::ZX_NODE));
 }
Beispiel #9
0
 static PyObject* Instruction_getNextAddress(PyObject* self, PyObject* noarg) {
   return PyLong_FromUint(PyInstruction_AsInstruction(self)->getNextAddress());
 }