Licensing CLI
History /
Edit /
PDF /
EPUB /
BIB /
Created: September 23, 2016 / Updated: July 24, 2025 / Status: in progress / 2 min read (~332 words)
Created: September 23, 2016 / Updated: July 24, 2025 / Status: in progress / 2 min read (~332 words)
- Encapsulate the application within a .phar
- Use obfuscation (can only obfuscate variables inside function/methods as anything else must remain with the same name in order to allow for dynamically called methods (or simply do not support such code))
- Must not make it easy to extract the original source code
- Must checksum itself for modification
- Should prevent usage by sharing a single license (TBD?)
- Should not be possible to reuse a trial forever in a VM
- Relying on opcode (to act as a binary) probably implies you are dependent on the php version used. Furthermore, it also means that the extension must be available and enabled for the code to work
- Given the current implementation of opcache, the cache cannot be reused on other machines as it contains the system ID as part of an opcache file header
- OPCACHE
- System ID
-
Timestamp
- Checksum
-> zend_accel_load_script (persistent_script, from_memory)
- Replace classes methods with (generated) traits that contain one or many of the classes method
- Compression/optimization by creating variables
- Even with obfuscation, PSR0/4 based code is too easy to distinguish (no reason to obfuscate libraries)
- Find some way to transform the original source such that it is in symbiosis with a client identifier (and thus cannot be removed)
- See one-way function
- Replace variables within functions with obfuscated names
- Concatenate all files into a single file (or bundle of files)
- Pre-process require/include, or do not allow their use (as the files will not be available)
- Randomize file order
- Scramble method order
- Inject junk code
- Insert junk code with encrypted user identification
- Generate a differently scrambled version per download/user