python 源码保护
python 源码保护如何做呢?最近看pyarmor ,从中有些思考,这里整理下。
最简单的想法
最简单直观的想法是自己把python 代码加密,程序导入模块的时候在调用自己的解密代码解密。 这里需要借助钩挂到
sys.meta_path 里面(关于sys.meta_path可以参考http://kuanghy.github.io/2016/10/25/python-import-hook、https://www.python.org/dev/peps/pep-0302/)
参考代码如下
class PyshieldImporter(object):
def __init__(self):
self.filename = ""
self.modtype = 0
def find_module(self, fullname, path=None):
try:
_name = fullname.rsplit('.', 1)[-1]
except AttributeError:
# no rsplit in Python 2.3
_name = fullname.split('.', 1)[-1]
if path is None:
path = sys.path
for dirname in path:
self.filename = os.path.join(dirname, _name + '.pye')
if os.path.exists(self.filename):
self.modtype = 0
ret