mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: better log output
This commit is contained in:
@@ -45,7 +45,7 @@ def projects_route():
|
||||
def project(name):
|
||||
project_setting = storage.get_project_setting(name)
|
||||
if project_setting == None:
|
||||
logger.error("Project {} not found".format(name))
|
||||
logger.error("Project {} not found".format(name))<<<<<
|
||||
return redirect("/projects", code=302)
|
||||
|
||||
project_setting.print()
|
||||
@@ -190,6 +190,7 @@ def add_project():
|
||||
settings.carrier_invoke_style = CarrierInvokeStyle.BackdoorCallInstr
|
||||
settings.payload_location = PayloadLocation.CODE
|
||||
settings.fix_missing_iat = True
|
||||
settings.plugin_antiemulation = "sirallocalot"
|
||||
|
||||
# add new project
|
||||
settings.project_comment = comment
|
||||
@@ -253,7 +254,7 @@ def build_project(project_name):
|
||||
|
||||
project_settings.try_start_final_infected_exe = False
|
||||
project = Project(project_settings)
|
||||
prepare_project(project_name, project.settings)
|
||||
prepare_project(project_name)
|
||||
thread = Thread(target=supermega_thread, args=(project.settings, ))
|
||||
thread.start()
|
||||
thread_running = True
|
||||
|
||||
@@ -57,7 +57,7 @@ def run_exe(exefile, dllfunc="", check=True):
|
||||
|
||||
|
||||
def run_process_checkret(args, check=True):
|
||||
logger.info(" > Run process: {}".format(" ".join(args)))
|
||||
logger.info(" > Run process: {}".format(" ".join(args)))
|
||||
|
||||
ret = subprocess.CompletedProcess("", 666)
|
||||
try:
|
||||
|
||||
+2
-2
@@ -13,7 +13,6 @@ class Payload():
|
||||
|
||||
|
||||
def init(self) -> bool:
|
||||
logger.info("-[ Payload: {}".format(self.payload_path))
|
||||
if not os.path.exists(self.payload_path):
|
||||
logger.error("Payload file does not exist: {}".format(self.payload_path))
|
||||
return False
|
||||
@@ -21,6 +20,7 @@ class Payload():
|
||||
with open(self.payload_path, 'rb') as f:
|
||||
self.payload_data = f.read()
|
||||
|
||||
logger.info(" Size: {} bytes".format(len(self.payload_data)))
|
||||
logger.info("-[ Payload: {} ({} bytes)".format(
|
||||
self.payload_path, len(self.payload_data)))
|
||||
return True
|
||||
|
||||
|
||||
+2
-3
@@ -36,11 +36,10 @@ class Project():
|
||||
logger.info("Injectable Path: {}".format(self.injectable.exe_filepath))
|
||||
|
||||
|
||||
def prepare_project(project_name, settings):
|
||||
src = "{}{}/".format(PATH_CARRIER, settings.carrier_name)
|
||||
def prepare_project(project_name):
|
||||
dst = "{}{}/".format(PATH_WEB_PROJECT, project_name)
|
||||
|
||||
logger.info("-[ Cleanup project: {}".format(project_name))
|
||||
logger.info("-[ Prepare and cleanup project: {}".format(project_name))
|
||||
|
||||
if not os.path.exists(dst):
|
||||
os.makedirs(dst)
|
||||
|
||||
+6
-4
@@ -114,8 +114,10 @@ class Injector():
|
||||
exe_out = self.settings.get_inject_exe_out()
|
||||
carrier_invoke_style: CarrierInvokeStyle = self.settings.carrier_invoke_style
|
||||
|
||||
logger.info("-[ Injecting Carrier".format())
|
||||
logger.info("-[ Injecting Carrier into injectable".format())
|
||||
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()
|
||||
@@ -197,7 +199,7 @@ class Injector():
|
||||
|
||||
|
||||
def injectable_patch_iat(self):
|
||||
logger.info(" Checking if IAT entries required by carrier are available")
|
||||
#logger.info(" Checking if IAT entries required by carrier are available")
|
||||
iatRequests = self.injectable.get_all_iat_requests()
|
||||
iatMissing = []
|
||||
|
||||
@@ -212,7 +214,7 @@ class Injector():
|
||||
iatRequest.name))
|
||||
iatMissing.append(iatRequest)
|
||||
|
||||
logger.info(" IAT entries missing: {}".format(len(iatMissing)))
|
||||
logger.info(" IAT entries missing in injectable for carrier: {}".format(len(iatMissing)))
|
||||
for iatRequest in iatMissing:
|
||||
# Not available, check if we can patch it
|
||||
iat_name = self.superpe.get_replacement_iat_for("KERNEL32.dll", iatRequest.name)
|
||||
@@ -272,7 +274,7 @@ class Injector():
|
||||
return
|
||||
|
||||
# insert data
|
||||
logger.info(" Inject Carrier data into injectable .rdata/.text")
|
||||
logger.info(" Inject Carrier-data into injectable")
|
||||
for datareuse_fixup in reusedata_fixups:
|
||||
logger.debug(" Handling DataReuse Fixup: {} (.code: {})".format(
|
||||
datareuse_fixup.string_ref, datareuse_fixup.in_code))
|
||||
|
||||
+5
-6
@@ -28,7 +28,7 @@ def create_c_from_template(settings: Settings, payload_len: int):
|
||||
src = "{}{}/".format(PATH_CARRIER, settings.carrier_name)
|
||||
dst = "{}{}/".format(PATH_WEB_PROJECT, settings.project_name)
|
||||
|
||||
logger.info("-[ Carrier create Template: {}".format(
|
||||
logger.info("-[ Create Carrier: {}".format(
|
||||
settings.project_c_path))
|
||||
|
||||
# check that source directory exists
|
||||
@@ -43,14 +43,13 @@ def create_c_from_template(settings: Settings, payload_len: int):
|
||||
|
||||
logger.info(" Carrier: {}".format(
|
||||
settings.carrier_name))
|
||||
logger.info(" Carrier: Code into: {}".format(
|
||||
logger.info(" Store payload in: {}".format(
|
||||
settings.payload_location.value))
|
||||
logger.info(" Carrier: Decoder: {}".format(
|
||||
logger.info(" Use Decoder: {}".format(
|
||||
settings.decoder_style))
|
||||
logger.info(" Carrier: Invoker: {}".format(
|
||||
logger.info(" Use Invoker: {}".format(
|
||||
settings.carrier_invoke_style.value))
|
||||
|
||||
logger.info(" Carrier AntiEmulation: {}".format(
|
||||
logger.info(" Use AntiEmulation: {}".format(
|
||||
settings.plugin_antiemulation)
|
||||
)
|
||||
if settings.plugin_guardrail != "none":
|
||||
|
||||
+1
-8
@@ -73,13 +73,6 @@ def main():
|
||||
settings.plugin_guardrail_data_key = args.guardrail_key
|
||||
settings.plugin_guardrail_data_value = args.guardrail_value
|
||||
|
||||
logger.info("-( Config: Implant IAT fixup if necessary: {}".format(settings.fix_missing_iat))
|
||||
if settings.plugin_guardrail != "none":
|
||||
logger.info("-( Config: Guardrails Plugin: {} {}/{}".format(
|
||||
settings.plugin_guardrail,
|
||||
settings.plugin_guardrail_data_key,
|
||||
settings.plugin_guardrail_data_value))
|
||||
|
||||
settings.decoder_style = args.decoder
|
||||
settings.carrier_name = args.carrier
|
||||
if args.payload_location == ".code":
|
||||
@@ -118,7 +111,7 @@ def start(settings: Settings) -> int:
|
||||
config.make_encryption_keys()
|
||||
|
||||
# Prepare the project: copy all files to projects/<project_name>/
|
||||
prepare_project(settings.project_name, settings)
|
||||
prepare_project(settings.project_name)
|
||||
|
||||
# Do the thing and catch the errors
|
||||
ret = False
|
||||
|
||||
Reference in New Issue
Block a user