python3.7.4反编译生成的.exe

亲测有效,测试环境:python3.7.4

今天尝试着反编译别人发的小工具(python生成的exe文件)。

第一步:上搜索引擎搜一下如何反编译,大概总结一下:
一、获取python的.pyc(即将exe解压)

参考链接:https://www.jianshu.com/p/4da8dada77bc

推荐另一篇关于防止python exe反编译的方法:https://blog.csdn.net/HW140701/article/details/93494869

总结一下:

1、拆解exe为pyc

将pyinstxtractor.py文件(下载链接:https://pan.baidu.com/s/1aNPOMd1a1-Ln0TucKw8JHw&shfl=sharepset)复制到Test.exe(需要反编译的文件)同目录下,鼠标光标停留在文件夹,按住键盘shift按钮同时右击鼠标右键,选择在此处打开命令窗口,运行cmd.exe,输入以下命令进行反编译:python pyinstxtractor.py Test.exe

python pyinstxtractor.py generate_can_struct.exe

解压后生成Test.exe_extracted的文件夹,打开,里面有两个文件需要用到:解压的exe文件名命名的文件,和struct文件,这两个文件都没有后缀名(这里文件格式没有显示为.pyc 查了一下可能是pyinstxtractor的问题,这不重要。)。

2、得到pyc文件

网上下载:010 Editor这个16进制编辑器,打开上述的两个文件。

(破解版:https://download.csdn.net/download/ly_561/11878527 或者也可以自行百度下载,也是百度运输过来的

按照网上的教程都是从struct文件中获取前8个字节(magic)补充到目标文件,然后将目标文件另存为.pyc文件然后利用Easy Python Decompiler v1.3.2进行反编译遇到错误:Invalid pyc/pyo file - Magic value mismatch!    或者使用uncompyle6命令也是遇到错误!这应该就是magic码没有正确还原。

根据其他人的经验,将struct文件E3前面的16位复制到目标文件。

光标停留在在目标文件卡头位置,选择顶部编辑菜单栏->插入/改写->插入字节。

插入后,将struct文件E3前面的16字节复制替换目标文件新增的前16个字节,使得这两个文件中的版本信息和时间戳一致。

替换使之一致后将目标文件保存,另存为xxx.pyc文件(后缀名.pyc需要手动输入)。这样就得到了目标文件。

二、使用了uncompyle进行py还原

回到命令行,打开刚才得到的pyc文件目录,安装uncompyle

pip install uncompyle

运行命令:uncompyle6 目标文件.pyc > 最终文件.py

最后可以开开心心的查看源代码了

此方法适用于只有一个py文件的,多个文件合成一个exe的破解有待探索。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值