Cython + Pyinstaller 防止反编译打包

Cython + Pyinstaller 防止反编译打包

1. 在项目根路径创建 build_pyd.py (文件名随意,以下命令默认此文件名)

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

setup(
    name='any words.....',
    ext_modules=cythonize(["request/HttpService.py"])
    )

cythonize(["需要加密的源码文件", "需要加密的源码文件"])

注:入口文件不能加密

2. 将需要加密的源码引入的依赖包复制到主入口文件
例如:HttpService.py 依赖了以下几个包

import configparser
import json
import time
import ahttp

而项目的主入口文件是 Application.py ,此时需要复制这几个依赖代码到 Application.py

原因: Pyinstaller 打包是默认加载 .pyd文件,不会检测并加载所需的包文件

3. 在终端窗口执行

python build_pyd.py build_ext --inplace

4. 执行完成后会在文件对应的目录下创建 XXX.cXXX.cp36-win_amd64.pyd 两个文件。其中 .c 是临时文件 .pyd 则是python的动态链接,接下来打包会引入此文件。

image.png

5. 然后再执行打包命令

pyinstaller -i static\logo.ico -w -p venv\Lib\site-packages Application.py

-i 是应用图标,-w 隐藏启动终端窗口,-p 是python是包路径,Application.py包含main方法的文件

参考资料:
https://blog.csdn.net/ZhaDeNianQu/article/details/87717293
https://blog.csdn.net/weixin_45116696/article/details/104861915
https://github.com/extremecoders-re/pyinstxtractor

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。