1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python代码编译和反编译exe执行文件

Python代码编译和反编译exe执行文件

时间:2024-01-23 00:06:04

相关推荐

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了。但是看网友说生成的文件中带有这个密钥,所以其实这种方式是不安全的。

第二种方式参考/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文件就可以正常运行了。

参考链接:

/ZhaDeNianQu/article/details/87717293

http://155.138.230.158/article/Jjokerr12/125601584

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。