python打包加密工具概述

参考链接
谈谈 Pyinstaller 的编译和反编译,如何保护你的代码
Linux之Python代码打包工具Nuitka使用说明
Nuitka-Python 打包 Linux(CentOS)
如何防止商用的深度学习模型源码泄露?
Python打包exe的王炸-Nuitka

01 pyinstaller

pyinstaller的不加密打包exe

pyinstaller的安装过程很简单,在命令行中就可以安装:

pip install pyinstaller

使用方式如下:

pyinstaller.exe -F yourcode.py

就可以输出一系列结果,其中dist文件夹下就是生成的exe文件。
这样的过程虽然简单,但是也可能被轻易反编译。下面简单介绍一下pyinstaller的反编译过程。
使用pyinstxtractor.py,可以将pyinstaller产生的exe文件解包成pyc文件。
该项目地址
接下来把该文件复制到exe同级目录下,使用下面的命令:

python pyinstxtractor.py xx.exe

运行后产生了xx.exe_extracted文件夹,要找到xxx.exe.mainfest文件,然后,看看xxx没有后缀名的文件,它就是pyc文件。此外目录下还有一个PYZ-00.pyz_extracted文件夹,里面都是引入的依赖库。
找到pyc文件后,就可以反编译,网上的工具和在线工具都有很多。不再赘述了。

pyinstaller的加密打包exe

在打包时加个参数key就可以加密,但是需要手动安装pycrypto包。

pip install pycrypto
pyinstaller.exe -F --key 123456 xxx.py

不过这个加密只针对依赖库。

02 Nuitka

Nuitka的打包类似于pyinstaller,但是程序运行性能更高,错误率更高,打包效率更低。可以酌情选择。

Nuitka安装命令

pip install nuitka

有说版本很重要,我安装的没有异常,版本是0.9.6

只封装一个python文件

python -m nuitka --lto=no yourpythonfile.py

会生成一个bin文件和其他文件,使用./yourpythonfile.bin就和python yourpythonfile.py的效果是一样的。

完整使用命令

nuitka --mingw64 --windows-disable-console --standalone --show-progress --show-memory --plugin-enable=qt-plugins --plugin-enable=pylint-warnings --recurse-all --recurse-not-to=numpy,jinja2,matplotlib,scipy,sqlalchemy,pandas,pygal,pyzbar,win32com --output-dir=out main.py

封装所有模块

python -m nuitka --follow-imports program.py

如果包含一些动态库,无法直接通过PYTHONPATH环境变量设置后直接导入的话,可以在封装过程中指定路径

python -m nuitka --follow-imports --include-plugin-directory=plugin_dir program.py

封装动态库

如果想将某些模块封装成动态库,需要使用--module指令

python -m nuitka --module some_module.py

运行后会生成some_module.so动态库,可以被其他程序导入使用。注意这个生成的动态库只能被相同版本的CPython导入。

封装包

封装整个包,同时一些模块使用动态库的方式,可以使用下面的命令

python -m nuitka --module some_package --include-package=some_package

如果要将代码分发到其他系统中,可以通过指定--standalone来生成一个文件夹,默认会导入所有模块,如果要排除一些模块,可以使用--nofollow-inport-to指令,但是在程序运行时可能会出现ImportError

python -m nuitka --standalone program.py

封装过程

封装的时候,.py文件首先是被转成了.c文件,然后被编译成了.o文件,最后合并成.bin可执行文件。
从bin到C是不可逆的,从C到Python也是不可逆的,代码相对来说很安全。
还有编译成动态链接库的方法,在这里不赘述了,主要是编译成.so文件,安全性也是高的。反汇编.so的时候,C代码也不是原来的代码了,无法推回Python。

python打包加密工具:Pyinstaller和Nuitka相关推荐

  1. Python打包分发工具setuptools简介

    Python打包分发工具setuptools 通过这个工具,可以打包安装插件,并且还可以发布到PyPI上面,具体参考: 1.http://python.jobbole.com/87240/ 2.htt ...

  2. 将python项目打包成exe(Pyinstaller 和 Nuitka)

    目录 一.打包方法 方法一:使用pyinstaller进行打包 方法二:程序中导入了matlab.engine的打包方法 方法三:使用Nuitka进行打包 二.打包过程中遇到的问题及解决方法 1.py ...

  3. Python打包EXE神器 pyinstaller

    最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...

  4. python打包分发工具:setuptools

    你是否也想写一个python库,想向社会开源或者企业内部使用,想让别人通过简单的命令pip install 安装你的库.那么setuptools绝对是最好用的python打包与分发工具. setupt ...

  5. python打包exe_Python | 用Pyinstaller打包发布exe应用

    笔者使用tk开发并打包成了Windows平台下的小工具. 工具/原料 Python2.7.11 Pyinstaller 3.1.1 安装Pyinstaller 1 按照习惯,我们使用pip来安装模块. ...

  6. python打包exe之pyinstaller

    一.pyinstaller 1.1 pyinstaller介绍 pyinstaller可以将python文件打包成独立的可执行文件exe,当写好工具发给别人使用时就无需相关依赖,开箱即用. 1.2 安 ...

  7. 【python打包】利用pyinstaller打包详细教程,一把过

    每次写好一个python程序之后,相信大部分人都不是在自己的电脑独自享受吧? 感觉每次都会语无伦次,所以就这样乱糟糟的吧... 今天以一个我自己编译的小程序为例,做一个简单的叙述. 第一步:看看这个帖 ...

  8. python制作加密工具_Python制作钉钉加密/解密工具

    又是很久没有写技术博客了,盖因最近都在学习知识,也没有总结出什么值得分享的内容,所以一直停笔至今.最近的工作和钉钉的开发打上了交到,官方并没有提供任何Python的SDK,于是只能全部自己写.现在我将 ...

  9. Setuptools(Python打包工具)

    目录 前言 一.安装 二.源码包介绍 2-1.源码包sdist 2-1-1.打包成源码包sdist 2-1-2.安装源码包 2-2.二进制包bdist 2-2-1.打包成源码包bdist 2-2-2. ...

最新文章

  1. 【Python基础】Python基础语法14个知识点大串讲
  2. [python学习] 专题八.多线程编程之thread和threading
  3. .NET Core on K8S 学习与实践系列文章索引 (更新至20191126)
  4. html菜鸟ruby,ruby的基础语法
  5. 机器学习基石01_课程说明
  6. python中1 100的质数_Python求解1到100之间的质数
  7. Latex写paper时增加脚注
  8. matlab整流仿真,整流电路MATLAB仿真实验 - 范文中心
  9. CSS3笔记(菜鸟教程)
  10. 三表左连接(LEFT JOIN) — 两表之间的关系
  11. 判断两个矩形是否重叠
  12. cocos2d编写android插件,[分享]Xposed插件dump Cocos2d-x应用的lua脚本
  13. 【iuap5.0特性解读】构建以业务创新和能力沉淀为核心的中台架构体系
  14. Object-C使用ICE
  15. 初级程序员和高级程序员的区别,你了解吗?
  16. MySQL中时间日期类型的使用
  17. Mermaid 类图举例 ClassDiagram 唐代传承图
  18. 最新病毒预警--Prometei 蠕虫病毒
  19. Android指纹识别ui显示,Android9.0指纹识别BiometricPrompt的简单使用
  20. 如何按ASCII码比较_Pt100铂热电阻信号如何采集转换?

热门文章

  1. SysML-Sec: A Model-Driven Environment for Developing Secure Embedded Systems
  2. iPhone8 和 iPhoneX 买哪个?听我的
  3. .Net C# Lambda表达式
  4. LFS(Linux From Scratch)构建过程全记录(一):准备工作
  5. 张正友相机标定Opencv实现程序(ubuntu下)
  6. 二维泊松方程数值解-五点差分法-共轭梯度法-python实现
  7. 数字互动沙盘解决方案
  8. 基于TCP的网络实时聊天室(socket通信案例)
  9. Vim 为什么把 HJKL 当作光标键?
  10. 兔子繁殖问题(递归解决)