bindings: add cs_version() back for python & java

This commit is contained in:
Nguyen Anh Quynh 2013-12-10 13:42:48 +08:00
parent 36df4bb6a7
commit aa036eebc2
3 changed files with 12 additions and 1 deletions

View File

@ -203,6 +203,7 @@ public class Capstone {
public byte cs_reg_read(NativeLong csh, Pointer insn, int id);
public byte cs_reg_write(NativeLong csh, Pointer insn, int id);
public int cs_errno(NativeLong csh);
public void cs_version(IntByReference major, IntByReference minor);
}
// capstone API version

View File

@ -1 +1 @@
from capstone import Cs, CsError, cs_disasm_quick, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_OPT_SYNTAX_ATT, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64
from capstone import Cs, CsError, cs_disasm_quick, cs_version, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_OPT_SYNTAX_ATT, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64

View File

@ -5,7 +5,9 @@ import arm, arm64, mips, x86
__all__ = [
'Cs',
'CsInsn',
'cs_disasm_quick',
'cs_version',
'CS_API_MAJOR',
'CS_API_MINOR',
@ -165,6 +167,7 @@ _setup_prototype(_cs, "cs_op_count", ctypes.c_int, ctypes.c_size_t, ctypes.POINT
_setup_prototype(_cs, "cs_op_index", ctypes.c_int, ctypes.c_size_t, ctypes.POINTER(_cs_insn), ctypes.c_uint, ctypes.c_uint)
_setup_prototype(_cs, "cs_errno", ctypes.c_int, ctypes.c_size_t)
_setup_prototype(_cs, "cs_option", ctypes.c_int, ctypes.c_size_t, ctypes.c_int, ctypes.c_size_t)
_setup_prototype(_cs, "cs_version", None, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
# access to error code via @errno of CsError
@ -184,6 +187,13 @@ class CsError(Exception):
return messages[self.errno]
def cs_version():
major = ctypes.c_int()
minor = ctypes.c_int()
_cs.cs_version(ctypes.byref(major), ctypes.byref(minor))
return (major.value, minor.value)
# quick & dirty Python function to disasm raw binary code
def cs_disasm_quick(arch, mode, code, offset, count = 0):
csh = ctypes.c_size_t()