simple string obf
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate _OBF_CHR sequences for compile-time string obfuscation (ROT16).
|
||||
|
||||
Usage:
|
||||
python scripts/obfuscate-strings.py ReflectiveLoader
|
||||
python scripts/obfuscate-strings.py "ntdll.dll" "RtlAddFunctionTable"
|
||||
|
||||
Outputs a C array initializer using _OBF_CHR() for each character.
|
||||
"""
|
||||
import sys
|
||||
|
||||
KEY = 16
|
||||
INDENT = "\t"
|
||||
|
||||
def obfuscate(s):
|
||||
chars = []
|
||||
for c in s:
|
||||
chars.append(f"_OBF_CHR('{c}')")
|
||||
chars.append("0")
|
||||
return ",\n".join(INDENT + ch for ch in chars)
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python obfuscate-strings.py STRING [STRING...]", file=sys.stderr)
|
||||
print("Example: python obfuscate-strings.py ReflectiveLoader", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
body = obfuscate(arg)
|
||||
var = arg.replace(".", "_").replace(" ", "_")
|
||||
print(f"static const unsigned char _enc_{var}[] = {{\n{body}\n}};\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user