Releases: dashingsoft/pyarmor
Release 6.2.6
- Fix
get_license_info
issue: the value ofCODE
is blank
Release 6.2.5
- Add option
--with-license
in the commandbuild
- Fix pack issue: the option
--with-license
doesn't work in super mode - If the code object couldn't be obfuscated in advanced 2 (super mode), fix it automatically by inserting one redundant line
[None, None]
at the beginning of this code object - Ignore case when checking mac address if the license is bind to network card
- Add key
ISSUER
in the return value ofget_license_info
Release 6.2.4
- Fix pack issue for Mac in super mode:
RuntimeError: unexpected pytransform.so
- Fix pack issue for windows 32-bit system: the default license doesn't work in other machines, it complains of
License is not for this machine
Release 6.2.3
- Add common option
--home
, so PYARMOR_HOME can be set in the command line - Fix pack issue: pack command may not work with super mode
Release 6.2.2
- Fix advanced mode issue: advanced mode 1 doesn't work in pyenv and some platforms
- Fix issue(#244): when obfuscating the scripts for cross platform and only one platform specified, the obfuscated scripts raise unexpected protection error.
Release 6.2.1
-
Fix issue(#244): when specify only one platform the obfuscated scripts raise exception
No such file or directory: 'xxx/_pytransform.so'
-
Super mode supports windows.x86, linux.x86, linux.aarch64, linux.aarch32, linux.armv7
Release 6.2.0
In this version, super mode is introduced to improve the security. In this mode the structure of PyCode_Type is changed, and byte code or word code is mapped, it's the highest security level in PyArmor. There is only one runtime file required, that is extension module pytransform
, and the form of obfuscated scripts is unique, no so called bootstrap code
which may make some users confused. All the obfuscated scripts would be like this
from pytransform import pyarmor
pyarmor(__name__, __file__, b'\x0a\x02...', 1)
It's recommended to enable this mode in suitable cases. Now only the latest Python versions are supported:
- Python 2.7
- Python 3.7
- Python 3.8
It may support Python 3.5, 3.6 later, but Python 3.0~3.4 is out of plan.
- Add new option
--obf-mode
,--obf-code
,--wrap-mode
to commandobfuscate
- Add new value 2 for option
--advanced
to enable super mode, refer to using super mode - Fix multiprocessing issue:
ValueError: __mp_main__.__spec__ is None
(#232) - The command
runtime
will generate default protection scriptpytransform_protection.py
- Add new option
--cross-protection
to commandobfuscate
to specify customized protection script - The default cross protection code will not be injected the entry script if
--no-runtime
is specified as obfuscating the scripts. In this case, use option--cross-protection
to specify one protection script - Change the default capsule location from
~/.pyarmor_capsule.zip
to~/.pyarmor/.pyarmor_capsule.zip
- Add new functions
get_user_data
,assert_armored
in runtime modulepytransform
- Document how to store runtime file license.lic to any location
- Remove the trailing dot from harddisk serial number, it may impact the license verified
Release 6.1.0
- Add external plugin script
assert_armored.py
- Enhance the command
licenses
:- The final argument could be empty, for example,
pyarmor licenses
will generate a default license tolicenses/pyarmor/license.lic
- If the output is end with
license.lic
, it will not append any other path, just save it as it is. For example,pyarmor licenses -O dist/license.lic
will save the final output todist/license.lic
- Add new option
--fixed
, and document how to use this option to improve the security
- The final argument could be empty, for example,
- In command
pack
, the default license will be generated with--fixed
to improve the security
Release 6.0.2
- Refine the obfuscated code object to improve security
- Refine plugin code to make it clear
https://pyarmor.readthedocs.io/en/latest/how-to-do.html#how-to-deal-with-plugins - Add internal plugin
assert_armored
and document basic usage
https://pyarmor.readthedocs.io/en/latest/advanced.html#checking-imported-function-is-obfuscated
Release 6.0.1
- Fix restrict mode 3 bug: the obfuscated script crashes or complains of this error:
This function could not be called from the plain script
(#219) - Fix bug: the obfuscated script raises unknown opcode error when the script is obfuscated by
obf_code=2
if there is recursive function call - Fix command
init
andconfig
bug: the entry script is set to.
other than empty when passing--entry=""
- Fix bug: the traceback will print very long line if the obfuscated script raises exception
- Fix bug: in some special cases the obfuscated scripts which are obfuscated with
--enable-suffix
still conflict with other obfuscated packages - Refine the error message as violating restrict mode
- The obfuscated script will raise exception
ReuntimeError
other than quit directly when something is wrong
Now it will print a pretty traceback to find where is the problem - When generating
license.lic
for the obfuscated scripts, the license version information will be embedded into the license file implicitly - Do not transfer exception type to
PytransformError
as pyarmor initializes failed
Upgrade notes:
The license file generated by this version doesn't work with the old obfuscated scripts. There are 2 solutions for this case:
- Still generating the license file with old version pyarmor
- Or obfuscating the scrips again by new version pyarmor