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的版本
    (1)可以将exe拖到010里面,搜索python,翻一翻便可以看到python38.dll或者python37.dll等等(只针对pyinstxtractor 2.1).
    (2)在pyinstxtractor解包时,会显示版本
    img
    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进行判断.

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
  • 指定py版本使用pip
    py -x.x -m pip install name

pyd

将.pyd文件放在当前工作目录便可以import,或者将.pyd文件放在lib/site-packages.

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