mirror of
https://github.com/dobin/SuperMega
synced 2026-06-03 01:27:11 +00:00
feature: xor encoding of payload with changeable key
This commit is contained in:
@@ -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
@@ -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])
|
||||
|
||||
|
||||
@@ -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,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
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user