def translate_v2ksym(self, addr): ctx = ffi.new("access_context_t *") ctx.translate_mechanism = lib.VMI_TM_PROCESS_PID symbol = lib.vmi_translate_v2ksym(self.vmi, ctx, addr) if symbol == ffi.NULL: raise LibvmiError('VMI_FAILURE') return ffi.string(symbol).decode()
def read_unicode_str_va(self, vaddr, pid): value = lib.vmi_read_unicode_str_va(self.vmi, vaddr, pid) if value == ffi.NULL: raise LibvmiError('VMI_FAILURE') encoding = ffi.string(value.encoding).decode() buffer = ffi.buffer(value.contents, value.length)[:] self.free_unicode_str(value) return buffer.decode(encoding)
def get_winver_str(self): value = lib.vmi_get_winver_str(self.vmi) if value == ffi.NULL: raise LibvmiError('VMI_FAILURE') return ffi.string(value).decode()
def read_str_pa(self, paddr): value = lib.vmi_read_str_pa(self.vmi, paddr) if value == ffi.NULL: raise LibvmiError('VMI_FAILURE') return ffi.string(value).decode()
def translate_v2sym(self, ctx, addr): symbol = lib.vmi_translate_v2sym(self.vmi, ctx, addr) if symbol == ffi.NULL: raise LibvmiError('VMI_FAILURE') return ffi.string(symbol).decode()
def get_rekall_path(self): value = lib.vmi_get_rekall_path(self.vmi) if value == ffi.NULL: return None return ffi.string(value).decode()