likes
comments
collection
share

【玩】Pyinstaller 加密打包成可执行文件

作者站长头像
站长
· 阅读数 3

【玩】Pyinstaller 加密打包成可执行文件


了解 Python 的都知道 Pyinstaller 可以将 .py 文件打包成 windows 下可执行的 .exe 文件, 但是在我们不想让他人反编译获取源码的时候就显得无能为力, 此时我们可以了解 .pdy 文件。

PYD

pyc 是二进制文件, 是由 Python 编译器进行编译后生成的文件, 加载速度快。pyo 是优化编译后的二进制文件, 可以通过 python -O file.py 生成。pyd 则是 Python 的动态链接库, 由其他语言编写。

.pyd 可不可以反编译呢?

【玩】Pyinstaller 加密打包成可执行文件

这是文档上的一段描述, .pyd 由 C 或者 C++ 编译组成, 至于它是否完全不可反编译, 我相信是不可能的, 仅是加大了反编译的难度。

打包

你需要安装 Cython 以及 pyinstaller 两个扩展包作为依赖。 Docs

  • 将主要代理编写至 main_code.py 文件中, 建议提供入口函数 main()
  • 编写 build.py 代理并键入以下内容:
    from distutils.core import setup
    
    from Cython.Build import cythonize
    
    setup(
        name='随你写什么',
        ext_modules=cythonize([
            "main_code.py",  # 你的主要代码封装文件名
        ])
    )
    
  • 执行 python3 build.py build_ext --inplace 生成 .pyd 文件
  • 重命名生成的 .pydmain_code.pyd
  • 新建执行脚本文件 run.py 并键入以下内容:
    from main_code import *
    
    if __name__ == '__main__':
    
        main()
    
    此时你可以尝试修改 main_code.py 成别的名字, 并运行 run.py 文件, 你会发现运行正常。
  • 执行 pyinstaller -D -i xxx.ico -w run.py

最后你会发现你的代码中没有 .pyc 的主要逻辑代码。

说明

为了使用打包的时候使用 -D 而不使用 -F

在生成唯一 .exe 文件后执行速度过慢, 当然我仅仅是推荐, 你可以使用任何自定义的方式编译你想要的效果。

点个赞呗~