Python代码编译和反编译exe执行文件
最近公司搞了个项目,用Python写的,写完之后打包成exe,需要进行加密,防止反编译,在知乎看到廖雪峰老师的一个观点,觉得很有意思。
但是领导安排的事情也不能不去做,从网上找了一天,把看到的方法总结一下。一般的破解方式是:拿到exe应用程序之后,用pyinstxtractor程序进行破击。大家可以自己从网上下载这个程序,下载完之后,把exe应用程序和pyinstxtractor放在同一目录下,如下图所示:
然后执行命令:python pyinstxtractor.py xxx.exe
(xxx是你的应用程序名字,我的是main)。执行完之后会生成一个文件夹,xxxx_extracted,从里面找到你的代码文件,只不过后缀变成了.pyc。我这个是main.pyc
.这个pyc文件拿在线编译工具(https://tool.lu/pyc
)就可以把代码给编译出来。所以我们的目标变成了在别人拿到exe应用程序之后,不让他生成这个pyc文件就可以了。
我从网上看到的有两种方式:一个是在用pyinstaller打包的时候,加上--key
这个参数,pyinstaller --key 123456789 -F -w xx.py
。123456789
就是你的密钥。后面用pyinstxtractor解密的时候,生成的文件就不是pyc了。但是看网友说生成的文件中带有这个密钥,所以其实这种方式是不安全的。
第二种方式参考https://blog.csdn.net/ZhaDeNianQu/article/details/87717293。里面讲述的很清楚。根据链接中的教程打包完毕后,双击运行exe文件,遇见了两个问题:
问题1:
**问题:**提示ImportError: Module use of python37.dll conflicts with this version of Python
原因: 我电脑安装了好几个版本的python,当时运行pthon build_pyd.pyd build_ext --inplace
的时候系统默认了使用py3.7进行编译,而项目环境是py3.10,所以出现了冲突。
解决方法:py -3.10 build_pyd.py build_ext --inplace
指定使用3.10版本的python运行此语句即可。
问题2:
解决了问题之后,当我再次运行exe文件时候,又报错了。
**问题:**报错信息是:‘no module name 'xxx'’
。
**原因:**但是明明之前直接运行main.py程序的时候不缺少库,后来找了很多方法,发现是因为我的main.py程序里没有把导入其他py文件中用到的库。
**解决方案:**只要是其他py文件中用到的库,即使main.py中没有用到这个库,也要在main.py中import
这个库。
batchFile.py、other.py、qlyq.py、sms.py和zy.py中import的库也要在main.py中导入。
解决完这两个问题后,重新运行pyinstaller -F -w main.py
生成的exe文件就可以正常运行了。
参考链接:
https://blog.csdn.net/ZhaDeNianQu/article/details/87717293
http://155.138.230.158/article/Jjokerr12/125601584
Python代码编译和反编译exe执行文件相关推荐
- so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程 ...
- python源代码的后缀名是_Python代码编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- Python程序编译与反编译
众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...
- 谈谈Python的编译和反编译
用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...
- Java代码的编译与反编译那些事儿
GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 2.5k Star 的 ...
- java反编译是什么_什么是Java代码的编译与反编译?
Java代码的编译与反编译 2017-02-21 Hollis 数盟 一.什么是编译 1.利用编译程序从源语言编写的源程序产生目标程序的过程. 2.用编译程序产生目标程序的动作. 编译就是把高级语言变 ...
- python编译和反编译
结论:从反编译的角度来看,想通过把.py 明文文件编译为.pyc二进制文件的方式,达到对python源码保密的目的是不可行的. 文章目录 1. 文件结构 2. 编译 3. 反编译 4. 总结 1. 文 ...
- springboot项目代码混淆和反编译教程·附软件连接
对springboot项目进行代码混淆,可以防止别人通过反编译项目查看代码,即使反编译了查看的也是混淆后的看不懂的代码. 一定程度保证了项目源码安全性. 下面分享代码混淆步骤和反编译操作 Allato ...
- python随笔:用pyinstaller 将python代码打包成exe执行文件
1.前言 经过几个星期的努力,终于完成了一个PyQt5项目.但日常使用或给别人使用代码模式非常不便,所以就产生了把代码打包成exe执行文件的想法. 2.pyinstaller 安装 在命令行执行以下语 ...
- vs可以编译python_Python如何进行编译和反编译
用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...
最新文章
- iOS之UI--涂鸦画板实例
- 强化学习(五)用时序差分法(TD)求解
- OpenYurt v0.3.0 重磅发布:全面提升边缘场景下应用部署效率
- Android数据库高手秘籍(二):创建表和LitePal的基本用法
- 用python读取股票价格_使用Python写一个量化股票提醒系统
- CyclicBarrier 和CountDownLatch使用详解
- 如何打开设计思路,避免不断改稿?只需提前做好这一步
- 二维数组数组名的使用
- 创意合成大片欣赏,进步都是从模仿开始
- AutoWrapper:通过有意义的响应来美化您的ASP.NET Core API
- The file contains a character that cannot be represented in the current code pag
- 每天一记 10.03.26
- 再次翻看WCF的书籍
- python turtle输出坐标_如何在Python/turtle中使用坐标列表绘制形状
- 云计算平台是什么意思?可以划分为哪三类?
- 如何批量抠图换背景?这两个方法可以做到
- python中and、or、not、in和not in五种运算用法
- Swift上写百度地图记录
- foxmail导入outlook部分邮件
- 命令行错误: 无法打开 元数据 文件 platform.winmd