exe反编译_反编译Python生成exe软件(Py3-polySML)

反编译对象为一篇文献上的软件,反编译只是为了了解一些源代码的逻辑。

过程参考文章:python3.7.4反编译生成的.exe

反编译对象:polySML

此对象为python打包,且未进行加密加壳软件,仅为学术使用

使用工具

  • python文件:pyinstxtractor
  • 16进制编辑器:010 Editor
  • python包:uncompyle

大致流程:

  • 通过pyinstxtractor将exe的内容文件提取出来
  • 使用010 Editor将pyc文件缺失部分补充完整
  • 使用uncompyle将pyc反编译为py文件

1.拆解exe为pyc文件

  • 将所需拆解的exe与pyinstxtractor文件放置在同一目录中
  • 在PowerShell中运行
python 

c4d64901186b847bf2c5892e7fdfd0ea.png
运行结果

当最后一行表明"Successfully ..."则拆解完成,个人认为其中最后一个"Possible entry point: MatML_no_comments"为个人编写的主要程序, 也可以根据对于python包的名字的掌握进行推断.

2.获得pyc文件

在拆解的文件夹里找到无后缀名的文件, 这些文件除了struct都是pyc文件, 但是都有缺失, 需要进行修复.

关注的是作者编写的主文件, 至于其他库文件不关注.

eb90e53f899aadac018b8fef75501826.png

使用010 Editor打开"MatML_no_comments"和"struct"文件

ba5399d9a26243fc5a506a22a090b733.png

在"struct"文件中找到"MatML_no_comments"文件开头的地方(即红色框), 将红色框前面的内容从"struct"中复制到"MatML_no_comments"(即蓝色框), 使下图的框内信息完全一致.

0c18c2716e878b1c401ffe49945424a8.png

保存"MatML_no_comments", 在"MatML_no_comments"后面添加后缀名".pyc"

至此pyc文件修复完成

3.使用了uncompyle进行py还原

在python中安装uncompyle库

pip install uncompyle

在powershell中运行

uncompyle6 目标文件.pyc > 最终文件.py

此次使用上述会报编码错误, 所以打开python文件进行输入

import 

即可完成

b074de4ea87e53d884168a4ca40f3b5b.png

报错整理

  • 编码方式有问题: 参见幻华:反编译python生成的exe时出现的问题
# 'gbk' codec can't encode character 'xae' in position 3366: illegal multibyte sequence

b286047a14fdac26a261f4052cbe7d4d.png
  • 没有修复完成, 重新修复
<class 'ValueError'>; bad marshal data (unknown type code)

7371224f81be91e284e9ab5b1ee34f7c.png

4.使用uncompyle还原其他py

这步需要对于python的包比较了解, 也可以直接在pypi上搜索进行判断是否为作者自己编写的文件

c76f51cf44c44d0577c50da2f16aef04.png

找到作者自定义的文件名到, 到文件夹"PYZ-00.pyz_extracted"中找到相应的pyc文件.

注意: 此处的pyc文件也需要进行如上步骤进行修复, 重复步骤2与步骤3, 则能初步将exe文件反编译出来.

通过阅读源代码可以了解到作者编写的逻辑或者辅助思考文章逻辑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值