diff --git a/app/templates/index.html b/app/templates/index.html index 8001dbb..3c4e815 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -10,6 +10,8 @@

SuperMega

+ Description of funtionality and settings. +

Shellcode

--shellcode <filename.exe>
diff --git a/app/views_project.py b/app/views_project.py index f8701ae..4c286d3 100644 --- a/app/views_project.py +++ b/app/views_project.py @@ -263,6 +263,8 @@ def build_project(project_name): # return redirect("/project/{}".format(project_name), code=302) project_settings.try_start_final_infected_exe = False + project_settings.cleanup_files_on_start = True # cleanup, or it will be confusing if failed + project = Project(project_settings) prepare_project(project_name) thread = Thread(target=supermega_thread, args=(project.settings, )) diff --git a/helper.py b/helper.py index 8a996a8..7506876 100644 --- a/helper.py +++ b/helper.py @@ -34,6 +34,7 @@ def clean_files(settings): settings.project_asm_path, settings.project_shc_path, settings.project_exe_path, + settings.get_inject_exe_out(), ] for file in files_to_clean: pathlib.Path(file).unlink(missing_ok=True) diff --git a/phases/injector.py b/phases/injector.py index a73bb6f..1543894 100644 --- a/phases/injector.py +++ b/phases/injector.py @@ -107,6 +107,7 @@ class Injector(): self.payload_rva = rdata_section.virt_addr + offset self.rdata_manager.add_range(offset, offset+len(self.payload.payload_data)) + ## Inject def inject_exe(self): @@ -118,7 +119,6 @@ class Injector(): logger.info(" Injectable: {} -> {}".format(exe_in, exe_out)) logger.info(" Implant IAT fixup if necessary: {}".format(self.settings.fix_missing_iat)) - # Patch IAT (if necessary and wanted) self.injectable_patch_iat() diff --git a/supermega.py b/supermega.py index af94117..f865f40 100644 --- a/supermega.py +++ b/supermega.py @@ -148,6 +148,8 @@ def sanity_checks(settings): def start_real(settings: Settings) -> bool: """Main entry point for the application. This is where the magic happens (based on settings)""" + #settings.print() + # Load our input project = Project(settings) if not project.init(): @@ -244,6 +246,8 @@ def start_real(settings: Settings) -> bool: dllfunc=settings.dllfunc) if payload_exit_code != 0: logger.warning("Payload exit code: {}".format(payload_exit_code)) + return False + elif settings.try_start_final_infected_exe: run_exe(settings.get_inject_exe_out(), dllfunc=settings.dllfunc, check=False)