PHP Encoder/Obfuscator
The PHP Encoder (or Obfuscator) tool scrambles PHP source code to make it very difficult to understand or reverse-engineer (example). This provides significant protection for source code intellectual property that must be shipped to a customer. It is a member of SD's family of Source Code Obfuscators.
PHP Encoder/Obfuscator Features
- Replaces variable, function, class, and constant names with nonsense names without affecting functionality
(to our knowledge, none of the other obfuscators do all of these)
- User definable list of preserved names
- Predefined list of commonly-used PHP system preserved-identifiers provided
- Facility to handle variable names embedded in eval'd string literals
- Strips comments and whitespace
- User definable comment filtering, to preserve Copyright and public interface documentation
- Obfuscates an entire set of files in one step, consistently, without breaking the source code
- Absolutely no changes required to your source code (Note: eval requires slight changes)
- No changes needed to the customer's PHP compilation or execution procedures or environment. Unlike PHP "Encoders", you don't have to insist your customer configure his PHP server your way.
- Option to neatly format PHP source and indent files according to their nesting level, to aid development before obfuscation.
- Output encoding in ASCII, European ASCII, or UNICODE
- Command line and GUI interfaces
Note: There are some competing PHP "protectors" that "encrypt" unaltered source code. Those products require your encrypted source code to be shipped to your customer with the very code it takes to decrypt your source. Any competent PHP coder should be able to trivially execute that decoder to see your source. True obfuscators like ours use nonsense identifier names, making those names impossible to understand by themselves. No "decoder" exists or can be built to ungarble such names; a would-be thief will have to work hard and dig deeply into the obfuscated source code to even begin guessing what each identifier might have meant.