pyinstxtractor的浅浅认识
pyinstxtractor
1、win下使用
python3 path/pyinstxtractor.py path/name.exe
2、注意exe文件是用什么版本的python打包的,如果版本不对应可能会导致PYZ-00.pyz_extracted文件夹为空的情况.此文件夹PYZ-00.pyz_extracted非常重要,一般一个稍微大一点的项目都会分成多个py文件,甚至会依赖其他模块,这些被依赖的文件解析后都会放入PYZ-00.pyz_extracted中,可以说这里放的是核心代码。
至于如何确定python的版本,可以将exe拖到010里面,搜索python,翻一翻便可以看到python38.dll或者python37.dll等等(只针对pyinstxtractor 2.1).

3、对于pyinstaller反编译的混淆,pyinstxtractor使用报错Error : Unsupported pyinstaller version or not a pyinstaller archive
参考文章: https://www.cnblogs.com/czlnb/p/15118864.html
翻阅pyinstxtractor.py的源码,搜索对应报错位置,分析

向下查询return True的位置

可以看到,此处要在self.fPtr.read(64).lower()中判断b'python'是否存在,向上看看,这个奇怪的数据区是什么意思

可以看出pyinstxtractor2.0的MAGIC(b'MEI\014\013\012\013\016')是在文件尾向上24位.可以看出pyinstxtractor2.1的MAGIC(b'MEI\014\013\012\013\016')是在文件尾向上24+64位

箭头所指位置到结尾刚好有88字节.
对于如何区分2.1与2.0,如果是2.1会找到python37.dll等等,2.0则找不到.原因:与2.0相比,2.1多了64字节的pylibname,那我们就看看该文件里存不存在pylibname进行判断.
pyd
将.pyd文件放在当前工作目录便可以import,或者将.pyd文件放在lib/site-packages.

浙公网安备 33010602011771号