You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

py2exe打包Python勒索软件测试脚本时模块缺失及运行报错问题求助

解决py2exe打包cryptography脚本时的_cffi_backend缺失问题

你遇到的核心问题是py2exe没有自动包含cryptography依赖的_cffi_backend.dll动态链接库,导致运行exe时触发ImportError。那些缺失的_posixshmem、bcrypt等模块其实是可选依赖或仅Linux平台的组件,Windows环境下可以忽略,不影响核心加密功能。下面是具体的解决步骤:

1. 先确保依赖包是最新版本

首先升级相关的Python包,避免版本兼容问题:

pip install --upgrade py2exe cryptography cffi

2. 修改setup.py配置,手动包含cffi依赖

py2exe无法自动检测到cryptography底层的cffi动态库,需要我们在setup.py中明确指定要包含的文件和模块。替换你的setup.py为以下代码:

from distutils.core import setup
import py2exe
import os
from cryptography.hazmat.backends import default_backend

# 获取_cffi_backend.dll的绝对路径
cffi_backend_path = os.path.join(
    os.path.dirname(default_backend().__module__.__file__),
    '_cffi_backend.dll'
)

setup(
    console=['dll32.py'],
    options={
        'py2exe': {
            # 明确包含cryptography相关模块
            'includes': ['cryptography', 'cryptography.hazmat.primitives', '_cffi_backend'],
            'packages': ['cryptography'],
            # 先不打包成单个文件,减少路径问题(后续可以尝试bundle_files=1)
            'bundle_files': 3,
            'skip_archive': False
        }
    },
    # 将_cffi_backend.dll复制到dist目录
    data_files=[('', [cffi_backend_path])]
)

3. 清理旧构建文件并重新打包

删除之前生成的build和dist文件夹,然后重新执行打包命令:

python setup.py py2exe

4. 测试运行exe

打包完成后,打开命令提示符,切换到dist目录,运行dll32.exe,此时应该不会再出现_cffi_backend缺失的错误,脚本也能正常执行加密操作。

额外说明

  • 关于打包时出现的模块缺失警告:_posixshmem是Linux进程间通信的模块,Windows根本不需要;bcrypt是SSH序列化的可选依赖;readline是UNIX终端的交互模块;resource是Linux系统资源管理模块。这些警告完全可以忽略,不影响Windows环境下的脚本功能。
  • 如果还是出现问题,可以尝试将bundle_files设置为3(默认值),不要打包成单个exe文件,这样更容易排查依赖缺失问题。
  • 注意:你的脚本是用于学士学位论文的勒索软件研究,请务必在受控的测试环境中运行,避免误加密重要文件。

内容的提问来源于stack exchange,提问作者Duschjenkovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:18:14