mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: read shellcode (carrier, payload) directly, no more files
This commit is contained in:
+12
-9
@@ -167,18 +167,21 @@ def start_real(settings: Settings):
|
||||
|
||||
# Assemble: Assemble .asm to .shc (ASM -> SHC)
|
||||
if settings.generate_shc_from_asm:
|
||||
phases.assembler.asm_to_shellcode(
|
||||
carrier_shellcode: bytes = phases.assembler.asm_to_shellcode(
|
||||
asm_in = settings.main_asm_path,
|
||||
build_exe = settings.main_exe_path,
|
||||
shellcode_out = settings.main_shc_path)
|
||||
|
||||
build_exe = settings.main_exe_path)
|
||||
observer.add_code_file("carrier_shc", carrier_shellcode)
|
||||
|
||||
# Merge: shellcode/loader with payload (SHC + PAYLOAD -> SHC)
|
||||
if True:
|
||||
phases.assembler.merge_loader_payload(
|
||||
shellcode_in = settings.main_shc_path,
|
||||
shellcode_out = settings.main_shc_path,
|
||||
if settings.payload_location == PayloadLocation.CODE:
|
||||
logger.info("--[ Merge carrier with payload".format())
|
||||
full_shellcode = phases.assembler.merge_loader_payload(
|
||||
shellcode_in = carrier_shellcode,
|
||||
payload_data = project.payload.payload_data,
|
||||
decoder_style = settings.decoder_style)
|
||||
observer.add_code_file("full_shc", full_shellcode)
|
||||
elif settings.payload_location == PayloadLocation.DATA:
|
||||
logger.error("Not impolemented yet: PayloadLocation.DATA")
|
||||
|
||||
# RWX Injection (optional): obfuscate loader+payload
|
||||
#if project.exe_host.rwx_section != None:
|
||||
@@ -190,7 +193,7 @@ def start_real(settings: Settings):
|
||||
# shutil.move(settings.main_shc_path + ".sgn", settings.main_shc_path)
|
||||
|
||||
# inject merged loader into an exe
|
||||
phases.injector.inject_exe(settings.main_shc_path, settings, project)
|
||||
phases.injector.inject_exe(full_shellcode, settings, project.carrier)
|
||||
observer.add_code_file("exe_final", extract_code_from_exe_file_ep(settings.inject_exe_out, 300))
|
||||
|
||||
if config.get("avred_server") != "":
|
||||
|
||||
Reference in New Issue
Block a user