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.

你可能感兴趣的:(pyinstxtractor.py 与 uncompyle6)