refactor: better log output

This commit is contained in:
Dobin Rutishauser
2025-06-20 09:49:14 +02:00
parent 78cb8ad116
commit 7eefe7c444
7 changed files with 20 additions and 26 deletions
+3 -2
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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