×

python cython pyd 打包 反编译

防止Python编写的程序被轻易反编译

鹭岛小千 鹭岛小千 发表于2022-05-29 08:02:55 浏览115 评论0

抢沙发发表评论

【问题描述】如何防止Python编写的程序被轻易反编译呢?

68-1.png

【小千解答】先将.py文件转成.pyd文件,再打包成.exe。

Step1  安装Cython库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Cython

Step2  安装和Python版本匹配的MSvc版本/Visual Studio版本。安装过程中,勾选“使用C++的桌面开发”项。

68-2.png

Step3  编写Python源文件,存放在D:\protect文件夹下,文件名:ceshi.py,源码如下:

import datetime as dt
import sys

today = dt.date.today()
with open('d:/abc.txt', 'w', encoding='utf-8') as txt:
    txt.write('我demo\n')
    txt.write(str(today) + '\n')
    txt.write(sys.argv[1] + '\n')
    txt.write(sys.argv[2] + '\n')
    try:
        txt.write(sys.argv[0])
    except:
        txt.write('err')

Step4  在同一路径下创建setup.py,代码如下:

from distutils.core import setup
from Cython.Build import cythonize

setup(name='test',ext_modules=cythonize('ceshi.py'))

68-3.png

Step5  打开命令行窗口,将当前路径切换至d:\protect,然后输入以下命令将ceshi.py文件转成ceshi.pyd。

python setup.py build_ext --inplace

68-4.png

Step6  将上一步生成的ceshi.cp38-win_amd64.pyd重命名成ceshi.pyd,删除该文件夹中除了ceshi.py、ceshi.pyd和setup.py以外的所有文件和文件夹。

68-5.pngStep7  新建一个xqtool.py文件,代码如下:

from ceshi import *

68-6.png

Step8  使用pyinstaller包将xqtool.py打包成xqtool.exe。

pyinstaller -F -w d:\protect\xqtool.py


【知识拓展】

 .pyd是二进制文件,相当于vb6.0制作的.dll文件。如果同一个文件夹内存在同名的.py和.pyd文件,在其它模块里导入时,优先导入.pyd文件,Step7的from ceshi将导入ceshi.pyd而不是ceshi.py,这是实现预期效果的关键所在。


打赏码.png


【参考资料】

  1. Visual Studio版本号、MSVC版本、工具集版本号

  2. Python不同版本对应的VS版本/VC编译器版本

  3. MSVC版本号对应

  4. Python防止反编译

  5. Python .py生成.pyd文件并打包.exe 的注意事项说明

  6. python 中 .py文件 转 .pyd文件的操作

  7. 通过pyinstaller打包编译好的pyd文件到exe

  8. 关于visual studio 2010:运行Python脚本时找不到vcvarsall.bat

  9. Cython出现错误:Unable to find vcvarsall.bat

  10. Python 3.8.x 解决 unable to find vcvarsall.bat 问题

  11. Unable to find vcvarsall.bat

  12. 彻底解决 error: Unable to find vcvarsall.bat


群贤毕至

访客