Threat model
What an attacker with the shipped build gets:
- RV64 machine code per script, loadable in Ghidra. No tokens, no comments, no local names, no type hints, control flow after optimisation.
- Exported function, property and signal names. Godot calls by name and the Sandbox reads the public API from
.symtab.--strip-allis not an option. Hashing is possible/realistic only for strings not used by the engine. - String literals, unless pooled.
- Scene and resource files, unchanged. This product protects code only.
What it does not do:
- Stop a determined reverse engineer. It raises cost from minutes with a GUI tool to days with a disassembler.
- Protect against cheating in a client-authoritative game. Use authoritative server logic.
- Replace PCK encryption. The two compose.
Compiled, not tokenized. Your source is not in the build.
This applies to converted scripts. Unsupported scripts remain source or tokens as listed in the export report. No recovery-time guarantee is made. String pooling and optional name hashing are not shipped protection features.