python 反编译

news2024/11/23 12:40:52

步骤1:

(前置)下载pyinstxtractor.py

①将pyinstxtractor.py文件移动到想要解包的文件目录下 
②并在当前目录下输入cmd打开终端,执行>python pyinstxtractor.py 待反编译.exe
eg:E:\my_decode>python pyinstxtractor.py service_decode.exe

步骤2:

①在生成的文件夹service_decode.exe_extracted下找到:没有后缀的service_decode文件、和struct文件;

②以上两个文件和“第2步修改头文件.py”放同级目录,运行py,

'''
第2步修改头文件.py

为了添加pyc的字节头;所以不需要把所有的字节显示出来,
只需要把文件前16个字节打印出来,
'''
def fanbianyi_main():
    f1=open('E:\my_decode\startcpchost.exe_extracted\struct', 'rb')#打开struct文件
    f2=open('E:\my_decode\startcpchost.exe_extracted\server_decode', 'rb')#打开待反编文件
    name='E:\my_decode\startcpchost.exe_extracted\server_decode'
    w2_all=f2.read()#先读取待反编文件原来的内容
    f2.seek(0)#读取完之后从头开始
    w=f1.read(17).hex()#struct再读取16个字节用于比较
    w2=f2.read(17).hex()#反编译也读取16个用于比较
    print("struct也读取16个用于比较:",w,w2,sep='\n')#打印出来让我们看见
    '''
    w1:420d0d0a000000007079693010010000e3
    w2:e300000000000000000000000006000000
    '''
    add=input('Please input the codes you need to write:')#然后问你要在开头写入什么
    add=bytes.fromhex(add)#把普通字符串转换为bytes格式,并不是encode,而是fromhex(),把字符串看成是十六进制编码
    f2.close()#关闭
    f2=open(name+'.pyc', 'wb')#创建pyc待反编文件
    f2.write(add+w2_all)#把加入的字节和原来的字节合并写入文件
    f1.close()
    f2.close()
    print('完成添加struct的头到反编译文件中')
    input()

if __name__ == '__main__':
    fanbianyi_main()

 {注:待反编译的文件以e3打头,而struct第17个字节是e3,所以把stuct的前16个复制到 待反编译的文件中;总之是把e3前的加入到待反编译的文件中,如果是12位就拷贝12位,依此类推}

步骤3:

(前置)pip3 install uncompyle6

①uncompyle6 main.pyc > test.py 
eg: E:\my_decode\
service_decode.exe_extracted>uncompyle6 service_decode.pyc >server_decode.py

E:\my_decode\service_decode.exe_extracted 文件夹下找到反编译后的代码server_decode.py

注:

如果是由多文件打包成一个.exe的,反编译只能获取main/主文件的.py,被引用文件在此目录下,暂未找到方法转换,有方法的欢迎留言;

 

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

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

相关文章

单向散列函数——获取消息的 “指纹”

目录 什么是单向散列函数散列算法的特征散列算法的用途散列算法的分类密码学哈希和非密码学哈希不安全的密码学哈希算法主流的密码学哈希算法 SHA256散列算法(SHA2算法)SHA256算法过程SM3散列算法 应该使用哪种单向散列函数呢 什么是单向散列函数 单向散…

【920信号与系统笔记】第二章 连续时间系统的时域分析

连续时间系统的时域分析 2.1引言综述n阶线性系统1.数学模型2.解法古典解法近代时域法(卷积法、算子法) 叠加积分法1.本质2. 待解决问题 2.2系统方程的算子表示法算子及其运算规则1.微分算子和积分算子2.运算规则3.电容和电感的伏安特性 转移算子1.定义2.…

20230508MTCNN1

多目标检测思路 单目标检测:图片 输入到 模型,模型输出 4个值 为什么模型只能检测单个目标? 因为模型 固定输出4个值,表示 一个目标 如何实现多目标检测?思路:一个一个地数 模型要能够 认识目标&#xff…

LiangGaRy-学习笔记-Day12

1、作业回顾 1.1、判断磁盘利用率 要求: 判断磁盘的使用率,如果超过了90%就警告 [rootNode1 sh]# vim disk_check.sh #!/bin/bash #Author By LiangGaRy #2023年5月9日 #Usage:检测硬盘的使用率 ########################################### #定义一…

蓝奥声核心技术分享——用电插座的安全保护技术(安全计量插座)

1.技术背景 用电插座的安全保护技术主要针对在用电负载接入接出(即插拔)用电插座的过程,解决瞬态异常监控及安全保护问题。该项技术涉及物联网智能硬件设备与测控技术领域,尤其涉及电能信号监测与用电安全监控的技术领域。 随着…

【Redis高级应用】分布式缓存

文章目录 单机Redis存在的问题Redis持久化RDB持久化执行时机RDB原理 AOF持久化AOF原理AOF配置AOF文件重写 RDB与AOF对比 Redis主从搭建主从架构主从数据同步原理全量同步增量同步repl_backlog原理 主从同步优化小结 Redis哨兵哨兵原理集群结构和作用集群监控原理集群故障恢复原…

MySQL多列字段去重的案例实践

同事提了个需求,如下测试表,有code、cdate和ctotal三列, select * from tt;现在要得到code的唯一值,但同时带着cdate和ctotal两个字段。 提起"唯一值",想到的就是distinct。distinct关键字可以过滤多余的重…

Machine Learning-Ex8(吴恩达课后习题)Anomaly Detection and Recommender Systems

1. Anomaly detection 内容:使用高斯模型来检测数据集中异常的数据(概率低的),先在2维数据中进行实验。样本具有两个特征:a. 服务器响应的吞吐量(mb/s) b. 延迟(ms)。 …

【linux网络】正则表达式

一、正则表达式 1.1作用范围 通常用于判断语句中,用来检查某一个字符串是否满足某一格式 1.2正则表达式的组成 普通字符包括大小写字母、数字、标点符号及其它符号元字符元字符是指在正则表达式中具有特殊意思的专用字符,可以用来规定其导字符&#…

【P18】JMeter JSON JMESPath Extractor

文章目录 一、准备工作二、测试计划设计 一、准备工作 慕慕生鲜: http://111.231.103.117/#/login 进入网页后,登录,页面提供了账户和密码 搜索框输入“虾” 右键检查或按F12,打开调试工具,点击搜索 二、测试计划设…

Bean的存取、五大注解、对象的注入方式、Bean的作用域和生命周期

一、Bean 的创建、存储和使用 PS:Java语言中的对象也叫作 Bean。 1、创建一个maven项目 PS:要在 pom.xml 中添加 spring 框架支持 PS:引入 lombok 依赖(可以帮助实现 get 和 set 方法) 2、存对象 2.1、创建类 启…

Linux 蜂鸣器驱动实验

蜂鸣器驱动原理 ①、在设备树中添加 SNVS_TAMPER1 引脚的 pinctrl 信息。 ②、在设备树中创建蜂鸣器节点,在蜂鸣器节点中加入 GPIO 信息。 1、修改设备树文件 添加 pinctrl 节点 I.MX6U-ALPHA开发板上的BEEP使用了SNVS_TAMPER1这个PIN,打开imx6ull-alien…

【01】C++的第一个程序Hello World

C的第一个应用程序(Hello World程序) 引言一、代码二、代码解释三、注意事项总结 引言 💡 作者简介:专注于C/C高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。 👉 &#x1f39…

报表生成工具Stimulsoft Reports.JS如何减少产品脚本的加载时间

Stimulsoft Reports 是一款报告编写器,主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署,如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等,在你的应用程序中嵌入报告设计器…

Django框架之视图HttpResponse 对象

本篇文章主要内容为:视图中HttpResponse对象的属性、方法及json、redirect子类包含使用cookie使用、跳转、json返回的示例。 概述 HttpResponse对象是对用户访问的响应,与HttpRequest对象由django创建,HttpResponse对象是由开发人员创建。Ht…

001+limou+MySQL的基础命令

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本博文是借鉴于李小威前辈所著的书籍《SQL 基础教程》所成的博文笔记,这本书真的很适合新手学习数据库相关的内容。本次我想给您带来的是关于MySQL的一些基…

网站神奇工具Viewport Resizer,支持手机、pad和电脑等不同尺寸大小

标题:Viewport Resizer:让网站适应不同设备的神奇工具! 导语: 在互联网世界中,我们常常需要在不同设备上浏览网站。为了让用户在手机、平板或电脑上都能看到美观易用的页面,网站开发者们努力优化网站的适应…

qemu-虚拟机

qemu 官网下载地址 https://www.qemu.org/ 跨平台虚拟机,类型vmware,执行效率比vmware高 官方参考文档:https://www.qemu.org/docs/master/system/introduction.html kvm,轻量级虚拟机,可以加速qemu的执行 qemu-e…

微信云开发技术架构

(仅有把抱怨环境的情绪,化为上进的力量,才是成功的保证。——罗曼罗兰) 微信云开发 官方文档 文本只用来概述微信云开发的技术架构,并结合实战场景进行说明。更详细的请直接查看微信官方文档。 背景 微信云开发是微…

Oracle11g全新讲解之游标

游标 游标的作用:处理多行数据,类似与java中的集合 1.隐式游标 一般是配合显示游标去使用的,不需要显示声明,打开,关闭,系统自定维护,名称为:sql 常用属性: sql%found:语句影响了…