前言
闲来无事,就喜欢瞎折腾,之前用python打包过exe小工具,然后今天就突然想到,既然能打包,那就肯定能反编译成py文件,为了这个想法,就网上查资料,自己操作了一下,过程参考了文章:
https://www.cnblogs.com/smart-zihan/p/14434498.html
如果觉得我写的看不懂,可以去看这个,哈哈哈
逻辑
这个逻辑的话,其实很简单,但是里面的详细原理,就要再研究研究了(本人不才,只知其然,不知其所以然)
首先,.py文件打包生成exe文件的过程就不过多讲了,网上有很多资料,我之前文章也写过(利用pyinstaller打包)
然后说下反编译的过程,总体逻辑就两步:
将.exe反编译成.pyc的二进制文件
2、将.pyc文件反编译成.py文件
需要用到的插件有以下三个,这两个到网上找下资源,自己下载一下:
pyinstxtractor.py
uncompyle6
16进制编辑器(16进制编辑器(HxD Hex Editor) v2.2.1.0 绿色中文版 下载-脚本之家)
然后下面说下具体操作步骤。
操作步骤
首先,这两个文件放到同一个文件路径下(exe文件就是此次需要反编译的文件,pyinstxtractor.py文件是需要下载的插件)
然后在cmd命令行或者pycharm中执行以下命令:
python pyinstxtractor.py gxtest2023060101.exe
对应路径下会生成一个文件夹
然后将生成的文件夹中,对应的以下两个文件拷贝出来(其中一个是与exe文件名字相同的,没有后缀的)
然后用16进制编辑器打开上述两个文件,下图是struct文件,可以看出,struct文件和gxtest2023060101文件中都有E3字段,不同的是,struct文件中,在E3前面多了一行,所以要把这一行的数据拷贝到gxtest2023060101文件中(直接在这个工具中拷贝就行),拷贝完成后,将gxtest2023060101文件另存为gxtest2023060101.pyc文件(加个后缀)
以上都做完后,最后执行命令: uncompyle6 -o gxtest2023060101.py gxtest2023060101.pyc
然后在文件夹中查看,就会发现新增一个.py文件
这个反编译的文件和原始文件,会有些不同,一是注释没有了,二是双引号变成单引号了
总结
整体来说不复杂,后面有时间可以再加一层加密,就是反编译过程中加密一层,这样可以避免别人破解自己的代码
来源地址:https://blog.csdn.net/qq_29691919/article/details/131003371