Pyinstaller加密打包成反编译可执行文件

作者:MedusaSorcerer 时间:2022-06-20 14:23:06 

前言

了解 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 文件

重命名生成的 .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 文件后执行速度过慢, 当然我仅仅是推荐, 你可以使用任何自定义的方式编译你想要的效果。

来源:https://juejin.cn/post/6850418116796219399

标签:Pyinstaller,加密打包,反编译
0
投稿

猜你喜欢

  • Python如何把多个PDF文件合并代码实例

    2021-03-27 00:31:15
  • python2.6.6如何升级到python2.7.14

    2023-08-07 22:54:52
  • 如何对Oracle8数据库进行维护?

    2009-11-20 18:01:00
  • python类参数定义及数据扩展方式unsqueeze/expand

    2023-08-07 21:56:42
  • Recipe: 把SQL数据库部署到远程主机环境(第一部分)

    2007-09-23 13:07:00
  • python冒泡排序算法的实现代码

    2021-09-08 03:48:27
  • Python数据正态性检验实现过程

    2022-07-10 15:46:14
  • Python asyncio的一个坑

    2022-04-06 20:58:28
  • Python基本数据类型详细介绍

    2021-10-14 07:02:50
  • VML模拟Rose画流程图代码

    2008-09-02 10:58:00
  • Mootools 1.2教程(5)——事件处理

    2008-11-19 16:33:00
  • YUI 学习笔记:Event

    2009-02-21 11:15:00
  • 对python中类的继承与方法重写介绍

    2023-03-21 09:49:20
  • python获取外网ip地址的方法总结

    2022-11-09 18:40:06
  • pandas 读取各种格式文件的方法

    2023-12-14 22:08:59
  • Python编译为二进制so可执行文件实例

    2023-03-05 06:30:36
  • Python 添加文件注释和函数注释操作

    2021-07-23 07:16:54
  • 回归预测分析python数据化运营线性回归总结

    2023-07-01 15:36:54
  • Oracle merge合并更新函数实例详解

    2023-07-23 02:45:02
  • Laravel框架路由管理简单示例

    2023-11-14 13:37:26
  • asp之家 网络编程 m.aspxhome.com