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 文件,不去会解析引入 .pyd 文件引入的包

3. 在终端窗口执行

python build_pyd.py build_ext --inplace

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

在这里插入图片描述

5. 然后再执行打包命令

pyinstaller -i static\logo.ico -w -p venv\Lib\site-packages Application.py
pyinstaller -i static\logo.ico -w -p C:\Users\Boliang\AppData\Local\Programs\Python\Python36\Lib\site-packages Application.py

-w 不显示终端窗口 -p 指定库路径 -i 执行的是应用图标

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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyInstaller并不支持直接将Python代码打包成dll文件,因为Python代码需要被解释器解释才能运行,而dll文件是编译后的二进制文件,无法被解释器解释。 不过,可以使用CythonPython代码编译成C代码,然后再将其编译成dll文件。Cython是一个能够将Python代码转换为C代码的工具,可以将Python代码中的部分代码编译成C代码,从而提高程序的性能。 以下是使用CythonPython代码打包成dll文件的大致步骤: 1. 安装Cython。可以使用以下命令安装Cython: ``` pip install Cython ``` 2. 将Python代码转换为C代码。使用CythonPython代码转换为C代码。例如,如果要将名为`my_module.py`的Python模块转换成C代码,可以使用以下命令: ``` cython my_module.py ``` 这将生成一个名为`my_module.c`的C代码文件。 3. 编译C代码为dll文件。使用C编译器将C代码编译为dll文件。例如,在Windows平台上,可以使用以下命令: ``` cl /LD /I "C:\Python\include" my_module.c /link /LIBPATH:"C:\Python\libs" /OUT:my_module.dll ``` 这将编译`my_module.c`为名为`my_module.dll`的dll文件。需要将`/I`和`/LIBPATH`参数替换为你的Python安装路径和libs路径。 需要注意的是,使用CythonPython代码转换为C代码时,需要将原有的Python代码中的一部分代码进行修改,以便能够编译成C代码。同时,编译dll文件时也需要根据操作系统和Python版本进行相应的调整。 希望以上步骤可以帮助你使用CythonPython代码打包成dll文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值