zoukankan      html  css  js  c++  java
  • pyinstaller打包的.exe文件反编译成.py文件

    原文地址:http://pluie.top/2020/09/03/pyinstaller打包的-exe文件反汇编成-py文件/

    0x00 工具

    pyinstxtractor

    uncompyle6 安装命令如下:

    pip install uncompyle6 
    

    0x01 前言

    在做ctf逆向题目时有时会遇到python写的.exe程序,如果能够将.exe反编译成python源码,就能更快解题。python打包exe文件有使用py2exe,pyinstaller,cx_Freeze,nuitka等方式,其中pyinstaller是最常用的方法。

    0x02判断是否为pyinstaller打包的exe文件

    IDA中打开字符串窗口,看到有一大堆Py_开头的字符串,可以判断是python写的程序

    image-20200903215009571

    接着再CTRL + F搜索 pyinstaller,如果搜索的到,就可以确定是pyinstaller打包

    image-20200903215135862

    0x03 .exe转.pyc

    首先利用pyinstxtractor脚本将.exe文件转为.pyc文件,指令格式为

    python pyinstxtractor.py  exe文件名称
    

    image-20200903215811896

    需要注意的是,如果你的本机python版本与写exe的python版本不同的话可能会失败。

    最后一行显示,你可以反编译.pyc文件。

    所以,我们就到生成的目录下找到.pyc文件。

    注意:有时候会找不到pyc文件,这是因为生成的文件少了pyc文件头,所以我们要找到少了pyc文件头的文件。一般情况下,该文件在名称和exe名称相同的.manifest文件上面。如果不是,可以把没有后缀名的文件都试一试。

    image-20200903222549282

    0x04 添加pyc文件头

    找到目录下名为struct的文件,用二进制编辑器打开,文件的前16个字节便是少掉的pyc文件头,将其添加到pyc文件偏移量为零的位置。

    image-20200905001616558

    注意,如果目录下本来就有.pyc文件也需要添加pyc文件头。

    0x05 .pyc转.py

    命令:

    uncompyle6 -o 生成文件.py 目标文件.pyc
    

    注意将pyc文件名改为XXX.pyc,否则会发生错误。

    image-20200905002611490

    0x06 总结

    可能出现的问题:

    1. .exe转.pyc失败,可能原因是pyinstaller打包时的python版本与你的python版本不同。
    2. .pyc文件反编译失败,可能原因是pyc文件头没有正确添加。
  • 相关阅读:
    2018百度之星初赛B轮 rect
    八数码问题(九宫格重排) 利用康托展开 判重
    2018百度之星初赛A轮 度度熊拼三角
    2018百度之星初赛A轮 度度熊学队列
    MongoDB(课时22 唯一索引)
    MongoDB(课时21 索引)
    MongoDB(课时20 游标)
    MongoDB(课时19 数据删除)
    MongoDB(课时18 修改器)
    MongoDB(课时17 更新函数)
  • 原文地址:https://www.cnblogs.com/pluie/p/13621823.html
Copyright © 2011-2022 走看看