【反编译系列】二、反编译 .pyc 文件(uncompyle6)

文章目录

  • 【反编译系列】二、反编译 .pyc 文件(uncompyle6)
    • 1. 介绍
    • 2. 反编译
    • Reference

【反编译系列】二、反编译 .pyc 文件(uncompyle6)

1. 介绍

.pyc 文件是 Python 将 .py 源代码编译后生成的字节码文件,主要有以下几个特点和作用:

  • 加速执行:直接执行 .pyc 字节码,可以跳过反复编译的步骤,直接运行已编译好的字节码,从而加快执行速度;

  • 隐藏源代码:包含编译后的字节码,而不会包含原始的源代码,可对源代码进行加密或者保护源代码不被用户访问;

  • 跨平台运行:不同平台编译的 .pyc 字节码文件可在其它平台上运行,可以将 Python 程序打包成 .pyc 文件在不同系统上分发和运行;

  • 冗余检查:Python解释器会根据 .py 文件的修改时间来检查 .pyc 文件是否过期;如果 .py 文件没有改动,.pyc 可以直接重用,避免重复编译;

  • 支持单文件运行:可以只发布 .pyc文件让用户直接运行,而不需要随附源代码,一定程度上保护代码;

  • 节省内存:只加载 .pyc 文件可以减少内存开销,因为不需要加载源码。

总体来说,.pyc 文件提高了执行效率、跨平台性,并提供了代码保护和优化内存使用等好处,所以 Python 自动使用 .pyc 字节码文件,但开发者仍可以访问和修改原始源代码。

2. 反编译

.pyc 文件是 Python 编译后的字节码文件,不是直接可读的文本文件,所以无法直接用文本/代码编辑器(下图为 VSCode)打开或查看其具体内容:

【反编译系列】二、反编译 .pyc 文件(uncompyle6)_第1张图片

但是,使用反编译工具(uncompyle6)可以将其反编译为 .py 即 Python 程序源代码:

1、使用 pip 安装该反编译包(默认已有 python 环境):

pip install uncompyle

如果速度很慢或者直接报 HTTP 错误,可以使用国内源(下述为清华源)进行下载安装:

pip install uncompyle -i https://pypi.tuna.tsinghua.edu.cn/simple

【反编译系列】二、反编译 .pyc 文件(uncompyle6)_第2张图片

2、进入 .pyc 文件所在的文件夹,反编译单个文件:

uncompyle6 test.pyc > test.py

好像要求 python 版本 <= 3.9!!!

3、反编译目录中的所有 .pyc 文件:

import glob
import uncompyle6

pycs = glob.glob('./transforms/*.pyc')

for pyc in pycs:
    uncompyle6.main.decompile_file(pyc, outstream=open(pyc.replace('.pyc', '.py'), 'w'))

即可完成 .pyc 字节码文件到 .py python 源代码的反编译。

Reference

Python pyc反编译成py

你可能感兴趣的:(反编译,python,深度学习,机器学习,人工智能,汇编,嵌入式硬件,vscode)