refactor: read shellcode (carrier, payload) directly, no more files

This commit is contained in:
Dobin
2024-05-08 14:34:19 +01:00
parent 012d1253af
commit 3aa79afd70
6 changed files with 41 additions and 47 deletions
+12 -9
View File
@@ -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") != "":