2026-06-23 22:26:55 -05:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
"""
|
|
|
|
|
Generate _OBF_CHR sequences for compile-time string obfuscation (ROT16).
|
|
|
|
|
|
|
|
|
|
Usage:
|
2026-08-20 10:57:56 -05:00
|
|
|
python scripts/obfuscate-strings.py "ntdll.dll"
|
2026-06-23 22:26:55 -05:00
|
|
|
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)
|
2026-08-20 10:57:56 -05:00
|
|
|
print("Example: python scripts/obfuscate-strings.py \"ntdll.dll\"", file=sys.stderr)
|
2026-06-23 22:26:55 -05:00
|
|
|
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()
|