pyinstxtractor.py 与 uncompyle6

  • 前两天,上学期帮人用python封了一个算法,打包成exe格式
  • 后来,电脑换硬盘,原盘格了,还没备份习惯,所以源码没了
  • 所以,要把现在exe反编译为python源码。
  • pyinstxtractor.py拆解exe为pyc
  • pyinstxtractor.py网上搜索可下载,放在exe目录,python pyinstxtractor.py xxx.exe
  • 生成拆解目录
--- xxx.exe_extracted
   -- out00-PYZ.pyz_extracted
      - 各种.pyc文件
   -- out00-PYZ.pyz
   -- some
   -- others
   -- xxx(注意这些都是没后缀的)
  • 安装uncompyle反编译需要的.pyc文件为.py
pip install uncompyle
  • 使用
uncompyle6 input.pyc > output.py
  • 反编译出的.py文件格式会有一些问题,当然,python的格式错误,对不齐,那就是逻辑错误了,所以需要修改修改。
  • 现在还有一个问题,.pyc文件数不对,发现就是拆解那一步控制台标明的入口文件,也就是上面拆解目录里面没有后缀的文件。
  • 其实那些文件也是.pyc文件,.pyc是16进制文件,通过对比发现,是缺少文件头。
  • 使用Hex Editor Neo打开一个.pyc文件,第一行是这样的
33 0d 0d 0a 00 00 00 00 00 00 00 00 e3 00 00 00
  • 打开一个无后缀文件,第一行是这样的
e3 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00
  • 所以,在无后缀文件前面补上33 0d 0d 0a 00 00 00 00 00 00 00 00,保存后添加后缀.pyc,那么它就是.pyc文件了,也可以反编译了。
  • 我用的是python36.

推荐阅读更多精彩内容

  • Distutils可以用来在Python环境中构建和安装额外的模块。新的模块可以是纯Python的,也可以...
    MiracleJQ阅读 2,673评论 0 1
  • " 每个人心里都有一团火, 路过的人只看到烟。 但总有那么一个人能看到这团火, 然后走过来,陪我一起度过。" 一个...
    梁几阅读 4,114评论 0 0
  • 今天看了香知蜜读提供的《如何高效阅读》的精选片段,关于测试自己的阅读速度的选段,没有参加香知炼书百天活动之前,看书...
    生花阅读 703评论 0 0
  • 无聊的时候打开了微信的应用包,发现一个好玩的事情,在微信的应用包里面,放本地标签的文件夹里有一个ImageEdit...
    叔叔甲阅读 709评论 0 0