最近公司搞了个项目,用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.py123456789就是你的密钥。后面用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执行文件相关推荐

  1. so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程 ...

  2. python源代码的后缀名是_Python代码编译与反编译

    众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...

  3. Python程序编译与反编译

    众所周知,Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议.那么很自然会有人有这样的疑问:难道Python程序只能以 ...

  4. 谈谈Python的编译和反编译

    用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...

  5. Java代码的编译与反编译那些事儿

    GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 2.5k Star 的 ...

  6. java反编译是什么_什么是Java代码的编译与反编译?

    Java代码的编译与反编译 2017-02-21 Hollis 数盟 一.什么是编译 1.利用编译程序从源语言编写的源程序产生目标程序的过程. 2.用编译程序产生目标程序的动作. 编译就是把高级语言变 ...

  7. python编译和反编译

    结论:从反编译的角度来看,想通过把.py 明文文件编译为.pyc二进制文件的方式,达到对python源码保密的目的是不可行的. 文章目录 1. 文件结构 2. 编译 3. 反编译 4. 总结 1. 文 ...

  8. springboot项目代码混淆和反编译教程·附软件连接

    对springboot项目进行代码混淆,可以防止别人通过反编译项目查看代码,即使反编译了查看的也是混淆后的看不懂的代码. 一定程度保证了项目源码安全性. 下面分享代码混淆步骤和反编译操作 Allato ...

  9. python随笔:用pyinstaller 将python代码打包成exe执行文件

    1.前言 经过几个星期的努力,终于完成了一个PyQt5项目.但日常使用或给别人使用代码模式非常不便,所以就产生了把代码打包成exe执行文件的想法. 2.pyinstaller 安装 在命令行执行以下语 ...

  10. vs可以编译python_Python如何进行编译和反编译

    用Python写脚本,小程序可谓非常方便,但它需要有特定的python环境才能运行,因此如果你想在别的电脑上运行时就会出现许多问题,就算已经安装了Python,但版本可能相差较大,且相关的依赖库没有安 ...

最新文章

  1. iOS之UI--涂鸦画板实例
  2. 强化学习(五)用时序差分法(TD)求解
  3. OpenYurt v0.3.0 重磅发布:全面提升边缘场景下应用部署效率
  4. Android数据库高手秘籍(二):创建表和LitePal的基本用法
  5. 用python读取股票价格_使用Python写一个量化股票提醒系统
  6. CyclicBarrier 和CountDownLatch使用详解
  7. 如何打开设计思路,避免不断改稿?只需提前做好这一步
  8. 二维数组数组名的使用
  9. 创意合成大片欣赏,进步都是从模仿开始
  10. AutoWrapper:通过有意义的响应来美化您的ASP.NET Core API
  11. The file contains a character that cannot be represented in the current code pag
  12. 每天一记 10.03.26
  13. 再次翻看WCF的书籍
  14. python turtle输出坐标_如何在Python/turtle中使用坐标列表绘制形状
  15. 云计算平台是什么意思?可以划分为哪三类?
  16. 如何批量抠图换背景?这两个方法可以做到
  17. python中and、or、not、in和not in五种运算用法
  18. Swift上写百度地图记录
  19. foxmail导入outlook部分邮件
  20. 命令行错误: 无法打开 元数据 文件 platform.winmd

热门文章

  1. 2020下半年软考 软件设计师通过感言
  2. 爬取CSDN博客文章,统计文章历史数据
  3. 第一章 为什么我们对机器学习感兴趣?(二)
  4. java系统找不到文件_java编译系统找不到指定文件
  5. 全局空间自相关算法:Join Count
  6. 使用github安装vue-devtools
  7. Servlet运行原理(Tomcat为例)
  8. java零基础自学教程视频,详细说明
  9. js代码混淆 webpack-obfuscator
  10. (附源码)ssm财务管理系统 毕业设计 282251