将python生成的exe文件反编译成py文件的方法

前言

闲来无事,就喜欢瞎折腾,之前用python打包过exe小工具,然后今天就突然想到,既然能打包,那就肯定能反编译成py文件,为了这个想法,就网上查资料,自己操作了一下,过程参考了文章:

https://www.cnblogs.com/smart-zihan/p/14434498.html

如果觉得我写的看不懂,可以去看这个,哈哈哈

逻辑

这个逻辑的话,其实很简单,但是里面的详细原理,就要再研究研究了(本人不才,只知其然,不知其所以然)

首先,.py文件打包生成exe文件的过程就不过多讲了,网上有很多资料,我之前文章也写过(利用pyinstaller打包)

然后说下反编译的过程,总体逻辑就两步:

1、将.exe反编译成.pyc的二进制文件
2、将.pyc文件反编译成.py文件

需要用到的插件有以下三个,这两个到网上找下资源,自己下载一下:

pyinstxtractor.py

uncompyle6

16进制编辑器(16进制编辑器(HxD Hex Editor) v2.2.1.0 绿色中文版 下载-脚本之家

然后下面说下具体操作步骤。

操作步骤

1.首先,这两个文件放到同一个文件路径下(exe文件就是此次需要反编译的文件,pyinstxtractor.py文件是需要下载的插件)

然后在cmd命令行或者pycharm中执行以下命令:

python pyinstxtractor.py gxtest2023060101.exe

对应路径下会生成一个文件夹

2.然后将生成的文件夹中,对应的以下两个文件拷贝出来(其中一个是与exe文件名字相同的,没有后缀的) 

3.然后用16进制编辑器打开上述两个文件,下图是struct文件,可以看出,struct文件和gxtest2023060101文件中都有E3字段,不同的是,struct文件中,在E3前面多了一行,所以要把这一行的数据拷贝到gxtest2023060101文件中(直接在这个工具中拷贝就行),拷贝完成后,将gxtest2023060101文件另存为gxtest2023060101.pyc文件(加个后缀)

 

4.以上都做完后,最后执行命令: uncompyle6 -o gxtest2023060101.py gxtest2023060101.pyc

然后在文件夹中查看,就会发现新增一个.py文件

 这个反编译的文件和原始文件,会有些不同,一是注释没有了,二是双引号变成单引号了

 

总结

整体来说不复杂,后面有时间可以再加一层加密,就是反编译过程中加密一层,这样可以避免别人破解自己的代码

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年9月7日
下一篇 2023年9月7日

相关推荐