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).
img
3、对于pyinstaller反编译的混淆,pyinstxtractor使用报错Error : Unsupported pyinstaller version or not a pyinstaller archive
参考文章: https://www.cnblogs.com/czlnb/p/15118864.html
翻阅pyinstxtractor.py的源码,搜索对应报错位置,分析
img
向下查询return True的位置
img
可以看到,此处要在self.fPtr.read(64).lower()中判断b'python'是否存在,向上看看,这个奇怪的数据区是什么意思
img
可以看出pyinstxtractor2.0的MAGIC(b'MEI\014\013\012\013\016')是在文件尾向上24位.可以看出pyinstxtractor2.1的MAGIC(b'MEI\014\013\012\013\016')是在文件尾向上24+64位
img
箭头所指位置到结尾刚好有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.

posted @ 2024-07-10 15:10  Un1corn  阅读(449)  评论(0)    收藏  举报