Python逆向
Python逆向特点
- 在 exeinfo pe 中查看到文件信息:
在文件信息中出现 PyInstaller 即为 Python 文件经过 pyinstaller 打包生成的可执行 .exe 文件
这类由 Python 生成的可执行文件无法通过 IDA 反编译,需要使用
pyinstxtractor.py
文件进行解包得到 Python 的反编译文件 .pyc
Python 逆向流程
- 下载
pyinstxtractor.py
工具包:GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor
将
pyinstxtractor.py
文件置于 pyinstaller 打包成的 .exe 文件夹下在该目录下执行 cmd,输入:
python pyinstxtractor.py exe文件名
- 转换后会在该目录下生成一个文件夹,其中必定存在一个无后缀名的
struct
文件,通过 exeinfo pe 可查看该文件为 .pyc 文件 【必要时可用它恢复文件头】
pyc 反编译
- 安装 uncompyle6:
pip install uncompyle6
- 在 .pyc 文件目录下,执行 cmd:
uncompyle6 pyc文件名
uncompyle6 -o py文件名 pyc文件名
若 Python 版本不对,会提示 KeyError: ‘3.10.4’ ( 3.10.4 为 Python 版本)
获取 pyc 文件头
- 方法一,通过 Pycharm 手动生成 .pyc 文件,获取文件头
代码如下:
# 代码开头需导入py_compile
import py_compile
# 随意写正确的python代码即可
def print_hi(name):
print(f'Hi, {name}')
if __name__ == '__main__':
print_hi('PyCharm')
# 最后调用该函数进行编译操作,单引号中是保存路径
py_compile.compile(r'D:\py_project')
- 方法二,通过 cmd 命令生成 .pyc 文件
python -m py_compile py文件名
评论