1. 背景

Python 作为一种动态解释型语言,虽然开发效率极高,但在商业化分发时面临着严峻的源码安全挑战。与 JavaScript 依托成熟的前端混淆生态不同,Python 原生的 .py 或 .pyc 文件极易被反编译。

要在 Windows 平台上实现安全的商业软件分发,我们需要解决以下核心痛点:

  1. 源码保护:防止核心逻辑被反编译。
  2. 环境打包:脱离 Python 环境运行(打包 exe)。
  3. 远程授权:实现激活码验证与设备绑定。
  4. 持续分发:提供安装包生成、直链下载及自动增量更新。

2. 工具链准备

以下是本方案实施所需的基础环境与工具链:

框架版本下载文档
Python3.8+www.python.org/
NuitkaLatestnuitka.net/
PyInstallerLatestpyinstaller.org/
Distromate1.0.2distromate.net

3. 模块加密 (Nuitka)

为了防止源码泄露,我们不直接分发 .py 或 .pyc 文件,而是使用 Nuitka 将核心业务逻辑编译为二进制扩展模块。

操作步骤:

  1. 识别核心模块:找出项目中含金量最高的代码(例如 core_logic.py),这些是需要重点保护的对象。
  2. 执行编译命令:
# 安装 Nuitka
pip install nuitka

# 将 core_logic.py 编译为扩展模块 .pyd
# --module: 指示编译为模块而非 exe
# --include-package: 如果有子包需要一并编译
# --msvc=latest: 显式指定使用 MSVC 编译器(推荐)
python -m nuitka --module --output-dir=build/nuitka_output --remove-output --assume-yes-for-downloads --msvc=latest app/core/core_logic.py

core目录出现 core_logic.cp313-win_amd64.pyd,这个就是nuitka编译生成的pyd文件,可以完美替换你的core_logic.py,并且相交源代码有了很好的保护

4. PyInstaller 打包

在核心模块被 Nuitka 编译后,我们需要使用 PyInstaller 将 Python 解释器、第三方依赖(如 requests, pandas 等)以及我们生成的二进制模块打包在一起。

操作步骤:

pyi-makespec main.py

修改 Spec 配置:

打开生成的 main.spec,确保 Nuitka 生成的二进制模块被正确包含。通常 PyInstaller 会自动识别导入,但如果遇到路径问题,可以在 binaries 字段手动添加:

# -*- mode: python ; coding: utf-8 -*-  
  
block_cipher = None  
  
a = Analysis(  
    ['main.py'],  
    pathex=[],  
    binaries=[(r'appcorecore_logic.cp313-win_amd64.pyd', 'app/core')], # 关键位置
    datas=[],  
    hiddenimports=['app', 'app.core', 'app.core.core_logic'],  
    hookspath=[],  
    hooksconfig={},  
    runtime_hooks=[],  
    excludes=[],  
    win_no_prefer_redirects=False,  
    win_private_assemblies=False,  
    cipher=block_cipher,  
    noarchive=False,  
)  
  
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)  
  
exe = EXE(  
    pyz,  
    a.scripts,  
    [],  
    exclude_binaries=True,  
    name='EncryptionDemo',  
    debug=False,  
    bootloader_ignore_signals=False,  
    strip=False,  
    upx=True,  
    console=False,  # 不显示控制台窗口(GUI 程序)  
    disable_windowed_traceback=False,  
    argv_emulation=False,  
    target_arch=None,  
    codesign_identity=None,  
    entitlements_file=None,  
)  
  
coll = COLLECT(  
    exe,  
    a.binaries,  
    a.zipfiles,  
    a.datas,  
    strip=False,  
    upx=True,  
    upx_exclude=[],  
    name='EncryptionDemo',  
)
  1. 执行打包:
pyinstaller entry_point.spec --clean

5. 集成远程授权

PyInstaller 解决了“运行”问题,而 Distromate 将解决“安装”、“授权”和“更新”问题。

5.1 创建应用与获取 SDK

登录 Distromate 控制台,创建一个新应用,获取项目 ID 和密钥。

5.2 AI 辅助集成 SDK

利用 Distromate 提供的集成指南,你可以将 SDK 集成提示词发送给 Claude Code、Cursor等 AI 编码工具。 ![[Pasted image 20260126200340.png]]

AI 将自动帮你完成网络请求、本地指纹获取及激活界面逻辑的代码编写,极速实现远程鉴权功能。

![[Pasted image 20260126200949.png]]

5.3 构建安装包与增量更新

代码集成完毕并重新用 PyInstaller 打包后,使用 Distromate CLI 对生成物进行处理。它不仅会生成用户友好的安装程序(Installer),还会自动计算差异,生成增量更新包并上传至服务器。

查看 dm-out 目录,安装包已就绪,且更新包已自动部署。

6. 最终效果演示

6.1 用户侧体验

  1. 安装与激活:用户运行安装包后,首次启动会自动弹出激活校验界面。

  1. 正常使用:激活成功后,程序解密并进入主界面,全程无感。 ![[Pasted image 20260126201914.png]]

6.2 管理侧体验

  1. 分发管理:在 Distromate 后台一键复制安装包直链发送给客户。

  1. 授权管理:在线生成激活码,控制有效期及绑定策略。

  1. 数据看板:实时查看应用的 DAU、激活量、活跃度等关键运营指标。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com