pyinstxtractor、venv与pyenv的浅浅认识
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进行判断.
venv###
官方文档:https://docs.python.org/zh-cn/3/library/venv.html
此工具比较适合同一环境,不同项目的情况
安装 virtualenv:
python -m pip install virtualenv
创建虚拟环境:
python -m venv path/myenv
启动:
myenv\Scripts\activate
关闭:
deactivate
pyenv
下载地址:https://github.com/pyenv/pyenv
py.exe
py.exe为python自带的切换python版本执行script的程序
查看当前可用版本
py -0
运行目标版本
py -x.x
以目标版本运行script
py -x.x name.py