注:
除特别说明外,下面使用的python版本均为3.8.6
文章中提到的相关工具均已包含在附件中。
一、步骤
1. exe → pyc
方法1:pyinstxtractor.py
执行python pyinstxtractor.py ,如果成功,即可获得_extracted 文件夹。
注:执行时会提示python版本问题,想要正常解包必须使用正确的python版本。
方法2:archive_viewer.py
执行python archive_viewer.py ,会打印EXE文件中包含的所有文件信息
使用x 命令将想要提取出的文件提取出来,q 命令退出。
两者的区别
方法1可以一次性提取出所有文件,方法2只能逐个提取文件。但是在个人使用时,方法2的成功率相对较高。可以先尝试用方法1,失败后用方法2。
2. pyc → py
步骤1获得的文件是pyc文件,还需要进一步反编译获得py文件。
注:我遇到过直接获得py文件的情况,所以在反编译之前可以先查看一下是不是已经成功了。
2.1 pyc文件恢复
注:最新版pyinstxtractor.py支持自动恢复pyc,但是经实验不能保证准确性。或者说需要使用准确的python版本才行。
在将python文件打包成exe文件的过程中,会抹去pyc文件前面的部分信息,所以在反编译之前需要检查并添加上这部分信息。
抹去的信息内容可以从struct文件中获取:
struct文件: