在Python中反编译可执行文件exe「建议收藏」

在Python中反编译可执行文件exe「建议收藏」前面简单介绍了将python代码和文件编译成可脱离环境运行的可执行文件exe。有编译就有反编译,本文来反编译一下前文中编译的exe文件。几种python文件在反编译前,先了解几种常见的python文件格式:.py:源代码文件,可以用文本编辑器查看和编辑;.pyc:源代码py文件编译后生

大家好,欢迎来到IT知识分享网。

前面简单介绍了将python代码和文件编译成可脱离环境运行的可执行文件exe。

有编译就有反编译,本文来反编译一下前文中编译的exe文件。

几种python文件

在反编译前,先了解几种常见的python文件格式:

.py: 源代码文件,可以用文本编辑器查看和编辑;

.pyc: 源代码py文件编译后生成的二进制文件,无法用文本编辑器进行编辑,由python的虚拟机来执行,pyc文件的内容跟python版本相关;

.pyo: 源代码py文件优化编译后生成的二进制文件,无法用文本编辑器进行编辑,Python3.5之后,不再使用.pyo文件名,而是使用类似”xxx.opt-n.pyc的文件名;

.pyd: python的动态链接库(dll),允许程序共享执行特殊任务所必需的代码和其他资源;

.pyz: zipapp打包文件(类似于pyinstaller打包成exe文件)

反编译exe文件

使用pyinstxtractor.py工具可以将pyinstaller 生成的exe文件解包成pyc文件,项目地址:

https://sourceforge.net/projects/pyinstallerextractor/

将下载的pyinstxtractor.py文件拷到exe相同的目录,执行命令:

python pyinstxtractor.py 应用程序名称.exe

执行结果将生成”应用程序名称.exe _extracted”的文件夹,如下图所示:

在Python中反编译可执行文件exe「建议收藏」

在根目录下,包括main二进制文件(对应原来main.py)

在Python中反编译可执行文件exe「建议收藏」

在PYZ-00.pyz_extracted子文件夹中,包括了引用类库文件mylib.pyc的二进制文件(对应原来的mylib.py)

在Python中反编译可执行文件exe「建议收藏」

转换pyc文件

pyc是二进制文件,无法直接查看和编译,需要转换成py文件。可以使用在线的工具:

http://tools.bugscaner.com/decompyle/

可是直接生成的pyc文件无法直接转换为py文件,这里分两种情况来看:

第一种,使用010 Editor,可以看到,根目录下的pyc文件(如main.pyc)相对于对应原始pyc文件,缺失16个字节

在Python中反编译可执行文件exe「建议收藏」

在E3前插入正确的16个字节即可,这16个字节可在根目录中struct.pyc下获得。

在Python中反编译可执行文件exe「建议收藏」

转换后,可能中文会存在编码显示问题,可使用在线编码转换工具:https://tool.chinaz.com/tools/unicode.aspx

第二种,与前一种类似,但不相同,即引用的文件(如mylib.pyc) 相对于对应原始pyc文件,在第8个字节后,缺少四个字节。补齐后即可转换成功。

在Python中反编译可执行文件exe「建议收藏」

结果逻辑分析

有了py源代码,接下来就是分析代码中的业务逻辑了,至于加密文件的解密,在后期的文章中分享。

在Python中反编译可执行文件exe「建议收藏」

在Python中反编译可执行文件exe「建议收藏」

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29285.html

(0)
上一篇 2023-09-29 15:33
下一篇 2023-10-01 21:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信