python3将exe 转支持库错误 AssertionError: None does not smell like code

exe -> pyc包(*.exe_extracted)

安装反编译工具

exe反编译工具:pyinstxtractor.py下载:https://sourceforge.net/projects/pyinstallerextractor/

python pyinstxtractor.py hello.exe

包反编译

懒的写!!! 这有详细说明

https://blog.csdn.net/qq_45100200/article/details/128485152

支持库部分(重点)

需要工具 uncompyle6

pip install uncompyle6

反编译

支持库一般是 PYZ-00.pyz_extracted 文件夹

命令

uncompyle6 hello.pcy -> hello.pc 

反编译错误!

由于支持库的pyc 文件也缺少了一部分
8-12字节的描述符
所以反编译会报 AssertionError: None does not smell like code

解决办法 手动补全

手动替换08–12 的字节(08-11 插入 12-15改写)
在这里插入图片描述
改写为以下内容
在这里插入图片描述

脚本处理(人类因为懒 才有了文明的进步)

不废话 直接上脚本

# -*- encoding:utf-8 -*-# uncompyle6 支付库 pcy -> py
# 错误 AssertionError: None does not smell like code
# 由于在 第8字节缺少4字节描述符 导致失败 _PCY_Z_ADDBYTES
# 将 _PCY_Z_ADDBYTES 填入后完成
import os
import sysclass PyCException(Exception):pass_PCY_Z_ADDBYTES = b"pyi0" + bytes([0x10, 0x02, 0x00, 0x00])
_PCY_Z_HEAD = bytes([0x42, 0x0d, 0x0d, 0x0a])def loadFile(aFile: str) -> bytes:with open(aFile, 'rb') as f:buf = f.read()return bufdef getFileName(aFileName):sl = os.path.basename(aFileName).rsplit('.', 1)[0]return sldef getFileSuffix(aFileName):return aFileName.split(".")[-1]class TPycZDecode():def __init__(self, aFile: str) -> None:self.fileName = aFileself.buf = loadFile(aFile)def _isPyc(self):print(self.buf[:4], _PCY_Z_HEAD)if self.buf[:4] != _PCY_Z_HEAD:raise PyCException("不是pyc支持库文件:%s" % self.fileName)def _isEncyrpt(self):# print(self.buf[9:10], self.buf[9:10] == bytes([0]))return self.buf[9:10] == bytes([0])def _addCode(self):if self._isEncyrpt()self.buf = self.buf[:8] + _PCY_Z_ADDBYTES + self.buf[12:]# print(self.buf[:15])def _isModule(self):""" 插入代码后判断 是模块 __init__.py 还是 模块内文件"""ret_path = ''# print(self.buf[0x01d:0x1d+4])v = int.from_bytes(self.buf[0x01d:0x1d+4], byteorder='little')# print(v)if v == 1:slen = int.from_bytes(self.buf[0x43:0x43+1], byteorder='little')# print(self.buf[0x44:0x44 + slen])s = self.buf[0x44:0x44 + slen].decode()# print(s)ret_path = sreturn ret_pathdef decode(self, aNewPath):self._isPyc()self._addCode()if not os.path.isabs(aNewPath):aNewPath = os.path.join(os.getcwd(), aNewPath)path = os.path.dirname(self.fileName)path_m = self._isModule()if path_m == '':# 模块文件file_name = getFileName(self.fileName)path_m = file_name.replace('.', '/') + '.py'else:path_m = path_mpath_m = os.path.join(aNewPath, path_m)os.makedirs(os.path.dirname(path_m), exist_ok=True)# 打完补丁的文件 写回with open(self.fileName, 'wb') as f:f.write(self.buf)cmds = "uncompyle6 %s > %s " % (self.fileName, path_m)print(cmds)os.system(cmds)def decode_dir(path, newPath=''):print(dirPath)if newPath == '':newPath = os.path.join(os.getcwd(), 'pycs-d')for root, dirs, files in os.walk(path):for file in files:if getFileSuffix(file) == 'pyc':print(file)file_path = os.path.join(root, file)print(file_path)try:pycf = TPycZDecode(file_path)pycf.decode(newPath)except Exception as e:print(e)def test_decodePyc():file = 'D:\mYcode\pthon\pcy'pycf = TPycZDecode(file)pycf.decode('pycs-d')if __name__ == '__main__':# decode_dir('D:\\mYcode\\pthon\\pcy')# 将 pyc文件放在 脚本根目录 pycs-e 文件夹下# 解密文件生成在 脚本根目录 pycs-d 内if len(sys.argv) > 1:dirPath = sys.argvelse:print("没有参数 路径默认 ./pycs-e")dirPath = os.path.join(os.getcwd(), 'pycs-e')try:os.mkdir(dirPath)except Exception as e:passif not os.path.exists(dirPath):print('路径错误:%s' % dirPath)exit(1)decode_dir(dirPath)print("完成")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/290658.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eclipse导入svn项目

1、配置maven和jre 2、用svn引入项目, 3一直点击next,到最后选完成。 4、从svn引入成功后,右键项目名点delete,弹窗出现的框不选,然后再import,点maven,点(existing maven projects)已存在maven项目,选择该文件等待引入完成…

故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-BiLSTM卷积神经网络-双向长短期记忆神经网络组合模型是一种深度学习模型,结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM)的优点…

C语言结合体和枚举的魅力展现

前言 ✨✨欢迎👍👍点赞☕️☕️收藏✍✍评论 个人主页:秋邱’博客 所属栏目:人工智能 (感谢您的光临,您的光临蓬荜生辉) 引言: 前面我们已经讲了结构体的声明,自引用,内存…

【详细讲解Android Debug Bridge各种命令及用法的文章】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

GRE、VPN实验报告

一、实验拓扑图 二、实验要求 1、按照图示配置IP地址 2、在R1和R3上配置默认路由使公网区域互通 3、在R1和R3上配置GRE VPN,使两端私网能够互相访问,Tunnel口IP地址如图 4、在R1和R3上配置RIPv2或者ospf或者静态,来传递两端私网路由 三、…

Paper Digest|基于在线聚类的自监督自蒸馏序列推荐模型

论文标题: Leave No One Behind: Online Self-Supervised Self-Distillation for Sequential Recommendation 作者姓名: 韦绍玮、吴郑伟、李欣、吴沁桐、张志强、周俊、顾立宏、顾进杰 组织单位: 蚂蚁集团 录用会议: WWW 2024 …

HCIP的学习(6)

OSPF—开放式最短路径优先协议 动态路由的评判标准 1、占用资源 2、收敛速度 3、选路动态路由分类: IGP---内部网关协议DV型---距离矢量型---RIPLS型---链路状态型---OSPFEGP---外部网关协议OSPF---无类别的路由协议(携带真实掩码)组播224.0…

C语言例4-35:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何?

方法一&#xff1a; 代码如下&#xff1a; //鸡翁一&#xff0c;值钱五&#xff1b;鸡母一&#xff0c;值钱三&#xff1b;鸡雏三&#xff0c;值钱一。百钱买百鸡、问鸡翁、鸡母和鸡雏各几何&#xff1f; //方法一&#xff1a; #include<stdio.h> int main(void) {int x…

如何使用Docker搭建WBO在线协作工具并实现无公网IP远程编辑本地白板

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板&#xff0c;允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

2015年认证杯SPSSPRO杯数学建模B题(第二阶段)替换式密码全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 B题 替换式密码 原题再现&#xff1a; 历史上有许多密码的编制方法。较为简单的是替换式密码&#xff0c;也就是将文中出现的字符一对一地替换成其它的符号。对拼音文字而言&#xff0c;最简单的形式是单字母替换加密&#xff0c;也就是以每个…

Verilog语法之assign语句学习

assign语法主要是对组合逻辑的变量进行赋值的&#xff0c;就是把一个变量赋值给另一个变量&#xff0c;被复制的变量必须是wire类型的参数。 从仿真结果可以看出&#xff0c;data_in变量的值赋值给了data_out,assign语法就是赋值没有任何延迟&#xff0c;data_in是什么值&#…

C++ —— C++11新增语法

目录 一&#xff0c;列表初始化 1.1 这是什么&#xff1f; 1.2 initializer_list 1.3 在容器的运用 1.4 STL中的变化 二&#xff0c;右值引用和左值引用 2.1 是什么&#xff1f; 2.2 这两个东西有啥关系&#xff1f; 2.3 有啥用&#xff1f; 三&#xff0c;*移动构…

【数据结构】顺序表习题之移除元素和合并两个有效数组

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;道阻且长&#xff0c;行则将至 前言 嗨呀&#xff0c;今天的博客是关于顺序表的两道题目&#xff0c;是力扣的移除元素和合并有序数组的题目。 一.移除…

sheng的学习笔记-AI-人脸识别

目录:sheng的学习笔记-AI目录-CSDN博客 需要学习卷机神经网络等知识&#xff0c;见ai目录 目录 基础知识&#xff1a; 人脸验证&#xff08;face verification&#xff09; 人脸识别&#xff08;face recognition&#xff09; One-Shot学习&#xff08;One-shot learning&…

HarmonyOS 应用开发之UIAbility组件基本用法

UIAbility组件的基本用法包括&#xff1a;指定UIAbility的启动页面以及获取UIAbility的上下文 UIAbilityContext。 指定UIAbility的启动页面 应用中的UIAbility在启动过程中&#xff0c;需要指定启动页面&#xff0c;否则应用启动后会因为没有默认加载页面而导致白屏。可以在…

新开发的客户对自己不够信任不敢下单怎么办?

重要通知&#xff1a; 4月7日起&#xff0c;顶易海关数据一年一度重磅众筹活动马上来袭&#xff01;*00元即可获得海关数据系统&#xff0c;蹲住啦! 记得添加业务经理137--3194--9879提前锁定名额哦! 近期&#xff0c;某品牌开咨询会&#xff0c;客户谈到了一个问题&#xf…

istio 设置 istio-proxy sidecar 的 resource 的 limit 和 request

方式一 修改 configmap 查看当前 sidecar 的 cpu 和 memory 的配额 在 istio-sidecar-injector 中查找&#xff0c;修改后重启 pod 可以生效&#xff08;下面那个 proxy_init 配置不管&#xff0c;不知道是干嘛的&#xff09; 方式二 如果是通过 iop 安装的 istio&#xf…

Java毕业设计-基于springboot开发的游戏分享网站平台-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、后台登录2.1管理员功能模块2.2用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的…

同城外卖多商户点餐系统平台开发JAVA版源码跑腿小程序APP

项目背景 在快节奏的现代生活中&#xff0c;人们对于时间的需求愈发敏感。如何在忙碌中兼顾生活与工作&#xff0c;如何在繁杂琐事中找到一丝便利&#xff0c;这已然成为众多都市人共同关心的议题。在这样的背景下&#xff0c;同城外卖跑腿系统软件应运而生&#xff0c;以其高…

Challenging BIG-Bench tasks and whether chain-of-thought can solve them阅读笔记

不是新文章哈&#xff0c;就是最近要看下思维链&#xff08;chain of thought&#xff0c;CoT&#xff09;这块&#xff0c;然后做点review。 文章链接&#xff08;2022年&#xff09;&#xff1a;https://arxiv.org/pdf/2210.09261.pdf GitHub链接&#xff1a;GitHub - suzg…