feature: xor encoding of payload with changeable key

This commit is contained in:
Dobin
2024-02-20 18:19:00 +00:00
parent 795227f60e
commit 23ca683360
5 changed files with 5 additions and 3 deletions
+1
View File
@@ -9,6 +9,7 @@ class Config(object):
self.data = {}
self.ShowCommandOutput: bool = False
self.debug: bool = False
self.xor_key: int = 0x31
def getConfigPath(self):
return CONFIG_FILE
+1 -1
View File
@@ -44,7 +44,7 @@ def merge_loader_payload(
# Nothing to do
pass
elif decoder_style == DecoderStyle.XOR_1:
xor_key = 0x42
xor_key = config.xor_key
logger.info("---[ XOR payload with key 0x{:x}".format(xor_key))
payload_data = bytes([byte ^ xor_key for byte in payload_data])
+1
View File
@@ -45,6 +45,7 @@ def create_c_from_template(
plugin_decoder = file.read()
plugin_decoder = Template(plugin_decoder).render({
'PAYLOAD_LEN': payload_len,
'XOR_KEY': config.xor_key,
})
filepath = "plugins/executor/{}.c".format(exec_style.value)
+1 -1
View File
@@ -1,4 +1,4 @@
for (int n=0; n<{{PAYLOAD_LEN}}; n++){
dest[n] = supermega_payload[n];
dest[n] = dest[n] ^ 0x42;
dest[n] = dest[n] ^ {{XOR_KEY}};
}
+1 -1
View File
@@ -11,7 +11,7 @@ class Project():
self.source_style: SourceStyle = SourceStyle.peb_walk
self.alloc_style: AllocStyle = AllocStyle.RWX
self.exec_style: ExecStyle = ExecStyle.CALL
self.decoder_style: DecoderStyle = DecoderStyle.PLAIN_1
self.decoder_style: DecoderStyle = DecoderStyle.XOR_1
self.dataref_style: DataRefStyle = DataRefStyle.APPEND
self.short_call_patching: bool = False