python如果单纯使用cpython生成动态链接库的话,部分代码还是能看到的,举个例子,如果python源码中的代码是:
password=123456
在linux环境下生成.so库文件后,记事本查看so文件依然能找到123456字符串。
所以需要先混淆代码,再生成动态链接库。
pip3 install pyminifier3
pip3 install Cython
pyminifier3用于代码混淆,Cython用于生成动态链接库。
举个例子,python源码如果是,文件名为add.py:
def add(x,y):
sum = x + y
return sum
那么先混淆代码:
pyminifier --lzma "add.py">_add.py
pyminifier -O --replacement-length=10 ./_add.py>sum.py
再生成动态链接库:
添加一个setup.py文件,内容如下:
from setuptools import setup
from Cython.Build import cythonize
#注意修改"sum.py"文件名为混淆后的文件名
setup(
name="sqlconn",
ext_modules=cythonize("sum.py")
)
然后执行:
python3 setup.py build_ext --inplace
此时即可生成so文件sum.cpython-310-x86_64-linux-gnu.so。
把.so文件放在其它python脚本的目录下即可调用。
例如新建1.py,然后将sum.cpython-310-x86_64-linux-gnu.so放在同目录,则通过:
from sum import add
print(add(1,2))
如果sum.cpython-310-x86_64-linux-gnu.so放在了子目录tools下,则通过:
from tools.sum import add
print(add(1,2))
参考:
Python生成pyc以及pyd文件的方法_python pyd-CSDN博客
Linux下使用Cython保护python代码防止反编译_python如何防止反编译-CSDN博客
如何使用Cython对python脚本加密成pyd/so_cython加密-CSDN博客