Pyinstaller加密打包反编译
MedusaSorcerer 人气:5前言
了解 Python 的都知道 Pyinstaller 可以将 .py 文件打包成 windows 下可执行的 .exe 文件, 但是在我们不想让他人反编译获取源码的时候就显得无能为力, 此时我们可以了解 .pdy 文件。
PYD
pyc 是二进制文件, 是由 Python 编译器进行编译后生成的文件, 加载速度快。pyo 是优化编译后的二进制文件, 可以通过 python -O file.py 生成。pyd 则是 Python 的动态链接库, 由其他语言编写。
那 .pyd 可不可以反编译呢?
这是文档上的一段描述, .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 文件
重命名生成的 .pyd 为 main_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 文件后执行速度过慢, 当然我仅仅是推荐, 你可以使用任何自定义的方式编译你想要的效果。
加载全部内容