Skip to content

Commit

Permalink
Merge pull request #89 from netanelc305/feature/extend_configs_mode
Browse files Browse the repository at this point in the history
libvmi: libvmi_cdef: Add `JSON` and `FILE_PATH` config options
  • Loading branch information
tklengyel authored Dec 30, 2023
2 parents c4105af + 5f854c8 commit 9a93220
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
22 changes: 20 additions & 2 deletions libvmi/libvmi.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,22 @@ def __setitem__(self, index, value):
raise_from(RuntimeError('Unknown field {} in regs.x86'
.format(index.name.lower())), e)

def __str__(self):
# Heuristic to determine the architecture
if hasattr(self.cffi_regs.x86, 'rip') or hasattr(self.cffi_regs.x86, 'eip'):
regs_to_print = self.cffi_regs.x86
elif hasattr(self.cffi_regs.arm, 'pc'):
regs_to_print = self.cffi_regs.arm
else:
raise RuntimeError("Unable to determine architecture")
attributes = []
for attr in dir(regs_to_print):
if not attr.startswith('_'):
value = getattr(regs_to_print, attr)
attributes.append(f"{attr.lower()} = {value:#x}")

return '\n'.join(attributes)


class VMIMode(Enum):
XEN = lib.VMI_XEN
Expand All @@ -150,6 +166,8 @@ class VMIConfig(Enum):
GLOBAL_FILE_ENTRY = lib.VMI_CONFIG_GLOBAL_FILE_ENTRY
STRING = lib.VMI_CONFIG_STRING
DICT = lib.VMI_CONFIG_GHASHTABLE
JSON_PATH = lib.VMI_CONFIG_JSON_PATH
FILE_PATH = lib.VMI_CONFIG_FILE_PATH


class VMIStatus(Enum):
Expand Down Expand Up @@ -318,8 +336,8 @@ def __init__(self, domain, init_flags=INIT_DOMAINNAME, init_data=None,
# from str to bytes
if init_flags & INIT_DOMAINNAME or init_flags & INIT_DOMAINID:
domain = domain.encode()
# same for VMI_CONFIG_STRING
if config_mode == VMIConfig.STRING:
# same for VMI_CONFIG_STRING | VMI_CONFIG_FILE_PATH | VMI_CONFIG_JSON_PATH
if config_mode in [VMIConfig.STRING, VMIConfig.FILE_PATH, VMIConfig.JSON_PATH]:
config = config.encode()
elif config_mode == VMIConfig.DICT:
# need to convert config to a GHashTable
Expand Down
4 changes: 4 additions & 0 deletions libvmi/libvmi_cdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ typedef enum vmi_config {
VMI_CONFIG_STRING, /**< config string provided */

VMI_CONFIG_GHASHTABLE, /**< config GHashTable provided */

VMI_CONFIG_JSON_PATH, /**< config in json file at the location provided */

VMI_CONFIG_FILE_PATH, /**< config file path provided */
} vmi_config_t;

// vmi_mode
Expand Down

0 comments on commit 9a93220

Please sign in to comment.