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.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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值