From 197aff440203c1fc6507eff085f87703529479ee Mon Sep 17 00:00:00 2001 From: JoYo <> Date: Wed, 19 Jan 2022 13:51:39 -0500 Subject: [PATCH] i forgot i could get name from class rather than object --- subdisassem/disassemble.py | 35 +++++++---------------------------- subdisassem/scripts.py | 7 +++---- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/subdisassem/disassemble.py b/subdisassem/disassemble.py index d9bd1c7..b773b9d 100644 --- a/subdisassem/disassemble.py +++ b/subdisassem/disassemble.py @@ -30,23 +30,8 @@ import logging class _CapstoneBase: - def __init__(self): + def __init__(self, payload: bytes, offset: int = 0): self.arch = self.__class__.__name__ - pass - - def __repr__(self) -> str: - return self.objdump - - def __len__(self) -> int: - if not self.disassembly: - logging.debug( - f"payload_missing: use {self.__class__}.load(payload=bytes) prior" - ) - return 0 - - return len(self.disassembly) - - def load(self, payload: bytes, offset: int = 0): disassembly = list() for opcode in self.capstone.disasm(payload, offset): @@ -58,14 +43,14 @@ class _CapstoneBase: logging.debug("disassembly_empty") self.disassembly = list() + def __repr__(self) -> str: + return self.objdump + + def __len__(self) -> int: + return len(self.disassembly) + @property def objdump(self) -> str: - if not self.disassembly: - logging.debug( - f"payload_missing: use {self.__class__}.load(payload=bytes) prior" - ) - return "" - opcodes = str() for opcode in self.disassembly: @@ -75,12 +60,6 @@ class _CapstoneBase: @property def disasm(self) -> list: - if not self.disassembly: - logging.debug( - f"payload_missing: use {self.__class__}.load(payload=bytes) prior" - ) - return [] - opcodes = list() for opcode in self.disassembly: diff --git a/subdisassem/scripts.py b/subdisassem/scripts.py index da8e213..49c18be 100644 --- a/subdisassem/scripts.py +++ b/subdisassem/scripts.py @@ -89,22 +89,21 @@ def subdisassem_script(): for arch in archs: for offset in range(args.fuzz): - disasembler = arch() exists = ( session.query(Disassembly) .filter(Disassembly.checksum == checksum) .filter(Disassembly.offset == offset) - .filter(Disassembly.arch == disasembler.arch) + .filter(Disassembly.arch == arch.__name__) .first() ) if exists: logging.debug( - f"subdiassembly_exists: {[disasembler.arch, checksum, offset]}" + f"subdiassembly_exists: {[arch.__name__, checksum, offset]}" ) continue - disasembler.load(payload=raw_bytes, offset=offset) + disasembler = arch(payload=raw_bytes, offset=offset) row = Disassembly() row.arch = disasembler.arch row.checksum = checksum