From e3d2deb4a0dd56eb9a1ca6b31638b8e27244a13f Mon Sep 17 00:00:00 2001 From: Dobin Date: Mon, 19 Feb 2024 19:36:49 +0000 Subject: [PATCH] refactor: make project not singleton --- config.py | 1 + defs.py | 2 -- helper.py | 3 +-- project.py | 2 -- supermega.py | 9 +++++---- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/config.py b/config.py index edeccae..279e752 100644 --- a/config.py +++ b/config.py @@ -7,6 +7,7 @@ CONFIG_FILE = os.path.join(os.path.dirname(__file__), "config.yaml") class Config(object): def __init__(self): self.data = {} + self.ShowCommandOutput: bool = False def getConfigPath(self): return CONFIG_FILE diff --git a/defs.py b/defs.py index 7b3f08e..9922aba 100644 --- a/defs.py +++ b/defs.py @@ -7,8 +7,6 @@ class FilePath(str): # with shellcodes/createfile.bin VerifyFilename: FilePath = r'C:\Temp\a' -ShowCommandOutput: bool = False - # Correlated with real template files # in plugins/ diff --git a/helper.py b/helper.py index 93d1299..0d6d7d7 100644 --- a/helper.py +++ b/helper.py @@ -5,7 +5,6 @@ import glob import logging from config import config -from project import project from defs import * logger = logging.getLogger("Helper") @@ -54,7 +53,7 @@ def run_process_checkret(args, check=True): if ret.stderr != None: logger.info(ret.stderr.decode('utf-8')) raise Exception("Command failed: " + " ".join(args)) - if ShowCommandOutput: + if config.ShowCommandOutput: logger.info("> " + " ".join(args)) if ret.stdout != None: logger.info(ret.stdout.decode('utf-8')) diff --git a/project.py b/project.py index e9e945b..a8f0677 100644 --- a/project.py +++ b/project.py @@ -48,5 +48,3 @@ class Project(): self.exe_info = ExeInfo() self.exe_info.parse_from_exe(self.inject_exe_in) - -project = Project() diff --git a/supermega.py b/supermega.py index a79784e..b6b7424 100644 --- a/supermega.py +++ b/supermega.py @@ -15,7 +15,7 @@ import phases.compiler import phases.assembler import phases.injector from observer import observer -from project import project +from project import Project log_messages = [] @@ -24,6 +24,7 @@ log_messages = [] def main(): logger.info("Super Mega") config.load() + project = Project() parser = argparse.ArgumentParser(description='SuperMega shellcode loader') parser.add_argument('--shellcode', type=str, help='The path to the file of your payload shellcode') @@ -40,7 +41,7 @@ def main(): args = parser.parse_args() if args.show: - ShowCommandOutput = True + config.ShowCommandOutput = True if args.verify: project.payload_path = "shellcodes/createfile.bin" @@ -106,10 +107,10 @@ def main(): project.inject_exe_in = args.inject project.inject_exe_out = args.inject.replace(".exe", ".infected.exe") - start() + start(project) -def start(): +def start(project: Project): # Delete: all old files if project.cleanup_files_on_start: clean_files()