From d008fef23f717f04ca7338f7f42993f8b73aea6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ana=20Mar=C3=ADa=20Mart=C3=ADnez=20G=C3=B3mez?= Date: Thu, 20 Aug 2020 15:43:43 +0200 Subject: [PATCH] extractors: enable miasm in Python3 Do not make miasm the default until we have ensured everything works as it should. --- capa/main.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/capa/main.py b/capa/main.py index 62f75855..e68e9d49 100644 --- a/capa/main.py +++ b/capa/main.py @@ -304,19 +304,27 @@ class UnsupportedRuntimeError(RuntimeError): def get_extractor_py3(path, format, disable_progress=False): - from smda.SmdaConfig import SmdaConfig - from smda.Disassembler import Disassembler + if False: # TODO: How to decide which backend to use? + from smda.SmdaConfig import SmdaConfig + from smda.Disassembler import Disassembler - import capa.features.extractors.smda + import capa.features.extractors.smda - smda_report = None - with halo.Halo(text="analyzing program", spinner="simpleDots", stream=sys.stderr, enabled=not disable_progress): - config = SmdaConfig() - config.STORE_BUFFER = True - smda_disasm = Disassembler(config) - smda_report = smda_disasm.disassembleFile(path) + smda_report = None + with halo.Halo(text="analyzing program", spinner="simpleDots", stream=sys.stderr, enabled=not disable_progress): + config = SmdaConfig() + config.STORE_BUFFER = True + smda_disasm = Disassembler(config) + smda_report = smda_disasm.disassembleFile(path) - return capa.features.extractors.smda.SmdaFeatureExtractor(smda_report, path) + return capa.features.extractors.smda.SmdaFeatureExtractor(smda_report, path) + else: + import capa.features.extractors.miasm + + with open(path, "rb") as f: + buf = f.read() + + return capa.features.extractors.miasm.MiasmFeatureExtractor(buf) def get_extractor(path, format, disable_progress=False):