• 解决uncompyle6反编译报错KeyError


    报错内容:KeyError:'3.11.0' (这个是我自己的Python版本号)

    主要原因就是你的Python版本没在它库文件支持的版本里,我们需要进行手动添加即可。

    首先找到文件:magics.py

    我的是在这个路径下:D:\Python\Lib\site-packages\xdis

    (每个人Python安装位置不一样,不过后面子文件夹应该是一样的)

    打开之后使用快捷键 Ctrl+F 进行关键字搜索:add_canonic_versions

    结果有很多,我们定位到最后一个结果的位置,如下图:

    将自己的Python版本号添加进去,中间使用空格隔开,修改后如下图:

    注意:

    修改好之后Ctrl+S保存

    尝试使用命令 uncompyle6

    依旧报错:

    Error: uncompyle6 requires Python 2.6-3.8

    我们还需要修改另一个文件:uncompile.py

    它的路径大概在:D:\Python\Lib\site-packages\uncompyle6\bin

    打开之后,同样检索关键字:main_bin

    进行添加,我的Python版本是3.11(同样需要注意空格的使用,格式与它一致

    添加后如下图:

    接下来再次尝试使用命令 uncompyle6

    可以看到没有出现报错,而是提示我们需要输入用于反编译的文件

    这里随便用一个正确的pyc文件进行测试:

    (注意 > 的前后都需要有空格隔开)

    可以看到反编译成功,pyc文件被成功反编译为py源码。

    至此,我们解决了uncompyle6反编译报错KeyError的问题。

    这篇文章可以帮助你解决 KeyError:'你的Python版本号' 的报错,解决报错之后你可以正常的进行正确的pyc文件的反编译。

    但是我在反编译自己生成的pyc文件中遇到了另一个报错:

    ImportError: Unknown magic number 3495 in test.pyc

    这是因为pyc文件生成时,头部的magic number被清理,需要我们另外补上。

    但是这个搞起来似乎有点麻烦,我们首先需要找到或者计算自己版本号对应的Magic Number,再对自己的pyc文件进行修复,Python3.3 - Python3.7(包含3.3)版本中,只需要Magic Number和八位时间戳+大小信息,Python3.3 以下的版本中,只有Magic Number和四位时间戳,在Python3.7及以上版本的编译后二进制文件中,头部除了四字节Magic Number,还有四个字节的空位和八个字节的时间戳+大小信息,不过对文件反编译没有影响,但是也需要全部填充为0。

     

    关于这个问题的相关解决方法我将放在下一篇博客,也是在Python专栏,欢迎大家来参考!

  • 相关阅读:
    智芯传感推出高性能低功耗ZXP2绝压压力传感器
    Linux两条服务器实现相互免密登录
    【论文发表】2022 HIRE--首篇基于异构图神经网络的高阶关系知识蒸馏方法
    工厂模式之工厂方法模式(常用)
    JS笔记合集之对象
    【计组】计算机系统体系结构
    conda常用指令
    JavaScript中null的类型
    rabbitMq创建交换机,以及路由键绑定队列教程
    [正确重装docker] Win10 重装 Docker 提示 Exising installation is up to date 的正确姿势
  • 原文地址:https://blog.csdn.net/Myon5/article/details/134536956