记录一次从exe到python源码

news2024/11/24 4:22:43

找到要解析源码的exe,用7zip解压出来,可以看到打包前的目录(这里并不是所有的exe都可以)。
如下图所示,由于这个是一个前后端打包的exe,这里的server是后端的服务,resources是前端,这里可以通过使用这个软件发现是一个前后端都在本地,通过网络鉴权的方式登录的。这里我是要绕过这个软件的登录
在这里插入图片描述

前端

asar是前端框架打包的,参考这里进行解压,解压后就得到前端的代码,当然打包后的一些文件名是经过重命名的。前期一直在尝试修改前端进行绕过,但是最终没成功。
在这里插入图片描述
app目录
在这里插入图片描述

后端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上面是部分后端目录的文件,后端是python写的,这些文件都是一些开源的东西,我要修改的地方不在这里面,在这个最大的exe文件里面
在这里插入图片描述
通过这个进行解压python打包exe文件注意要用同一版本的python才行,不同版本的话,PYZ-00.pyz_extracted文件夹会为空,如果不知道使用什么版本的话,可以先用其他的版本解包,解完之后,在里面找到struct.pyc文件,用winhex打开,查看头部找到对应的版本,然后再用对应版本进行解开
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
PYZ-00.pyz_extracted目录是重点,但是上面这个图出现了probably encrypted ,说明并没有解压成功,说明是通过加密的。

但是我发现这个crypto_key.pyc文件,把这个pyc转成py,参考这里
在这里插入图片描述
得到key,然后参考、参考2
在这里插入图片描述
通过下面这个脚本进行解密,修改对应的路径和秘钥,就可以解出对应的pyc文件

import glob
import zlib
import tinyaes
from pathlib import Path

CRYPT_BLOCK_SIZE = 16

# key obtained from pyimod00_crypto_key
key = bytes('CYNLlJe5RycAPXED', 'utf-8')

for p in Path("path").glob("**/*.pyc.encrypted"):
    inf = open(p, 'rb')  # encrypted file input
    outf = open(p.with_name(p.stem), 'wb')  # output file

    # Initialization vector
    iv = inf.read(CRYPT_BLOCK_SIZE)

    cipher = tinyaes.AES(key, iv)

    # Decrypt and decompress
    plaintext = zlib.decompress(cipher.CTR_xcrypt_buffer(inf.read()))

    # Write pyc header
    # The header below is for Python 3.8
    outf.write(b'\x55\x0d\x0d\x0a\0\0\0\0\0\0\0\0\0\0\0\0')

    # Write decrypted data
    outf.write(plaintext)

    inf.close()
    outf.close()

    # Delete .pyc.encrypted file
    p.unlink()

在这里插入图片描述
在这里插入图片描述

然后再用decompile3、pycdc、uncompyle6将pyc转成py文件,就可以得到对应的源码,进行修改了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【现代机器人学】学习笔记十二:轮式移动机器人

这一章讲移动机器人相关的内容。许久没有更新了,有人私聊我是不是烂尾了。写的这几篇屁文我本来是拿来当自己的笔记本的,不以为有人会认真看。没想到居然还有人追,真是受宠若惊。在这里深表感谢!一直没更新其实是因为年后的工作实…

优惠卷秒杀功能、全局唯一ID、乐观锁解决超卖问题、悲观锁实现一人一单、集群下锁失效问题

文章目录 1 全局唯一ID的需求分析2 Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 乐观锁解决超卖问题6 悲观锁实现一人一单7 集群环境下的并发问题 1 全局唯一ID的需求分析 每个店铺都可以发布优惠券: 当用户抢购时,就会生成订单…

ASP.NET Core MVC 从入门到精通之序列化

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

Springboot +Flowable,任务认领和回退(三)

一.简介 有的时候,一个任务节点会存在多个候选人,例如:张三提交一个任务,这个任务即可以由李四处理,又可以由王五处理,那么针对这种多个任务候选人的情况,该如何处理? 二.绘制流程…

并发编程05:Java内存模型之JMM

文章目录 5.1 先从大场面试开始5.2 计算机硬件存储体系5.3 Java内存模型Java Memory Model5.4 JMM规范下三大特性5.5 JMM规范下多线程对变量的读写过程5.6 JMM规范下多线程先行发生原则之happens-before5.6.1 x,y案例说明5.6.2 先行并发原则说明5.6.3 happens-before总原则5.6.…

【面试题】面试官:说说你对MySQL的了解

文章目录 基础篇非关系型数据库和关系型数据库的区别?MySQL 数据库两种存储引擎的区别? 索引篇为什么索引能提高查询速度?聚集索引和非聚集索引的区别?非聚集索引一定回表查询吗?索引这么多优点,为什么不对表中的每一个列创建一个索引呢&a…

八岁都能懂:BFS判断一个图是二分图

目录 1 什么是二分图2 进入情境3 代码实现4 BFS是什么? 1 什么是二分图 一个图用两种颜色涂(橙黄和橘绿),相邻节点不能同色,如下图,4与5相邻且同色,所以不是二分图。 2 进入情境 第一版&#xf…

微服务高频面试题

1、Spring Cloud 5大组件有哪些? 早期我们一般认为的Spring Cloud五大组件是 Eureka : 注册中心Ribbon : 负载均衡Feign : 远程调用Hystrix : 服务熔断Zuul/Gateway : 网关 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置…

【论文】SimCLS:摘要总结的对比学习(2)

SimCLS:摘要总结的对比学习(1) 写在最前面2 抽象总结的对比学习框架 写在最前面 SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization(2021ACL会议) https://arxiv.org/abs/2106.01890 论文:htt…

HTTP第四讲——域名和DNS

IP 协议的职责是“网际互连”,它在 MAC 层之上,使用 IP 地址把 MAC 编号转换成了四位数字,这就对物理网卡的 MAC 地址做了一层抽象,发展出了许多的“新玩法”。 例如,分为 A、B、C、D、E 五种类型,公有地址…

[GFCTF 2021] day2

Baby_Web 查看源码发现 <!--源码藏在上层目录xxx.php.txt里面&#xff0c;但你怎么才能看到它呢?--> 然后抓包看中间件&#xff0c;Apache/2.4.49 (Unix) 存在目录穿越漏洞 curl http://node4.anna.nssctf.cn:28805/cgi-bin/.%2e/.%2e/.%2e/.%2e/var/www/index …

快速上手分布式异步任务框架Celery

一、Celery架构介绍 Celery&#xff1a;芹菜&#xff1f;&#xff08;跟翻译没有任何关系&#xff09;&#xff0c;分布式异步任务框架&#xff08;跟其他web框架无关&#xff09; Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please…

【嵌入式系统】课程复习资料整理

【嵌入式系统】课程复习资料整理 一、绪论 1.定义 从技术的角度定义&#xff1a;以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义&#xff1a;嵌入式系统是设计完成复杂功能的硬件和软件&a…

Android多模块开发

Android多模块开发 1. 建立项目和多个模块 ​ app为主模块 ​ app-setting为功能模块&#xff0c;可作为独立模块运行&#xff0c;也可作为其他模块的资源模块 ​ app-video为功能模块 2. 建立公共环境文件(env.gradle)并在各模块配置 Step1&#xff1a; 建立在根目录下建…

第31步 机器学习分类实战:多轮建模

开始填坑之旅。 首先&#xff0c;之前提过&#xff0c;random_state这个参数&#xff0c;它的功能是确保每次随机抽样所得到的数据都是一样的&#xff0c;有利于数据的复现。比如&#xff0c;我们这十个ML模型&#xff0c;用的参数都是random_state666&#xff0c;这样作比较才…

【写一个hello的html页面,将页面放到服务器,通过浏览器访问页面,这个过程是怎么实现的?】第一个 servlet 程序

第一个 servlet 程序 第一个 servlet 程序1. 创建项目创建好后的 默认目录 解析 2. 引入依赖为什么要引入依赖&#xff1f; 3. 创建目录结构1、在 main 目录下创建一个 webapp 目录2、在 webapp 下创建一个 WEB-INF 目录3、在 WEB-INF 目录下创建一个 web.xml 文件4、web.xml 需…

章节3:02-Apache Commons Collections反序列化漏洞

章节3&#xff1a;02-Apache Commons Collections反序列化漏洞 02-Apache Commons Collections反序列化漏洞 漏洞爆出 2015.01.28 Gabriel Lawrence和Chris Frohoff https://speakerdeck.com/frohoff/appseccali-2015-marshalling-pickles-how-deserializing-objects-can-r…

《Java虚拟机学习》 asmtools 字节码汇编器使用 与 JVM识别方法重载 的思考

1.asmtools下载 链接&#xff1a;https://pan.baidu.com/s/1R3nAaUbN1Dkf6UKkdEMSEA?pwdk8l8 提取码&#xff1a;k8l8 2.结合方法重载实验的使用 总所周知&#xff0c;方法重载跟方法名无关&#xff0c;但对于JVM而言&#xff0c;区别方法主要通过 类名&#xff0c;方法名&…

java spring MVC REST风格概念叙述

REST属于spring MVC中的一个知识点 REST是三个单词的缩写 即 Representational State Transfer 意思为 表现形式状态转换 老实说 不用尝试字面上理解 因为字面意思 确实是比较抽象 其实 意思就是 访问网络资源的格式 转换 下图 对比了 传统风格和REST风格 请求路径的差别 RES…

【英语】大学英语CET考试,阅读部分2(长篇阅读,选词填空,综合演练)

文章目录 1、长篇阅读&#xff08;连连看&#xff0c;要会做&#xff09;1.1 解题技巧&#xff08;定位词扫读&#xff0c;看到大于看懂&#xff0c;一题带练&#xff09;1.2 做题方法复习总结1.3 题目练习&#xff08;2篇文章&#xff09; 2、选词填空&#xff08;只有5分&…