如何反编译Python写的exe到py
参考链接:
https://blog.csdn.net/qq_44198436/article/details/97314626?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/pcat/p/8990482.html
https://www.cnblogs.com/pcat/p/11625300.html
准备工作:
1. 下载pyinstxtractor.py(百度上搜):https://github.com/extremecoders-re/pyinstxtractor
2. 安装uncompyle6: pip install uncompyle6
3. 下载16进制编辑器:https://www.jb51.net/softs/557257.html#downintro2
为了验证效果,接下来从创建py开始一步步看结果。
第一步:自己写一个py打包成exe -- target_exe.py(简单的两数相加)


#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Python-20210127 -> target_exe.py.py
@IDE : PyCharm
@Author : Aimee
@Date : 2021/2/23 8:57
@Desc :
================================================="""
import sys def main():
print("target_exe started") # main()函数开始了
argc = len(sys.argv)
if argc == 3:
a = int(sys.argv[1])
b = int(sys.argv[2])
result = a + b # 两数相加
print("a + b =", result)
if a < 0 or a > 100: # 对a的作用域进行判断
print("a is not in [0, 100]")
if a > 0 and b > 0:
print("a and b >0") if __name__ == '__main__':
main()
target_exe.py->target_exe.exe
pyinstaller -F target_exe.py
将target_exe.py重命名为target_exe_origin.py
第二步:解压exe
将pyinstxtractor.py放在与exe同级目录下,运行
python pyinstxtractor.py target_exe.exe
会在当前目录生成一个target_exe.exe_extracted文件夹,里面会有一些没有后缀的文件名,target_exe就是我们需要进行反编译的文件。在正向编译过程中,生成的pyc会把python版本信息和时间戳去掉,但是反编译的时候我们需要将其补齐。
注意到在target_exe.exe_extracted还存在一个没有后缀名的文件struct,用16进制编辑器打开struct和target_exe文件。
两个文件都有E3,可以看到struct在E3的前面还有一段,应该就是Python版本和时间戳了,将前面一段复制到target_exe中,直接在16进制编辑器里面复制就好了。
保存,然后重命名target_exe为target_exe.pyc。
第三步:反编译pyc文件,得到target_exe.py
uncompyle6 -o target_exe.py target_exe.pyc
得到target_exe.py,那么现在将得到的target_exe.py和原本写的target_exe_origin.py进行对比,看看结果
可以发现,注释没有了,双引号变单引号,if-and变成两个if,功能没啥变化。
OK,反编译就讲到这里。
如何反编译Python写的exe到py的更多相关文章
- 反编译python打包的exe文件
目录 1.前言 2.使用环境 3.还原过程 4.号外 5.exe文件和所用到的反编译工具 6.参考 7.去签名(补漏) 前言 拿到了利用驱动人生进行传播的病毒样本,发现是python打包成的exe文件 ...
- 反编译pyinstaller打包的exe安装包
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译 在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win ...
- 使用uncompyle2直接反编译python字节码文件pyo/pyc
update:在Mac OS X版的September 10, 2014版(5.0.9-1)中发现安装目录中的src.zip已更换位置至WingIDE.app/Contents/Resources/b ...
- uncompyle2反编译python的.py文件
前几天学用github,一不小心把a.py文件给删除了,由于1天没有提交,也无法找回.突然发现同a.py文件生成的编译文件a.pyc还在,逐去搜索一番反编译的方法. 查询得知python比较好的工具u ...
- 反编译.net下的exe程序
1. 什么叫.net平台 .NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境..NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的 ...
- python的exe反编译
目录 python的exe反编译 方法一.使用archive_viewer.py提取pyc 方法二.使用pyinstxtractor.py提取pyc python的exe反编译 驱动人生样本为pyth ...
- 对Python源码加密及反编译前后对比
关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...
- python反编译之字节码
如果你曾经写过或者用过 Python,你可能已经习惯了看到 Python 源代码文件:它们的名称以.Py 结尾.你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python "字 ...
- C# exe dll防止反编译-- dotNET_Reactor
新建两个VS C#工程test.sln 和 reactor.sln test工程代码中初始化时,删除reactor.exe 生成test工程 用软件 dotNET_Reactor 设置,保存成 set ...
随机推荐
- WordPress安装篇(3):用宝塔面板在Linux上安装WordPress
前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...
- 09:jQuery(02)
内容概要 jQuery操作标签 jQuery绑定事件 jQuery补充知识点 jQuery动画效果(了解) 零散补充 内容详细 jQuery练习题 $('#i1') r.fn.init [div#i1 ...
- conn / as sysdba连接不上
问题: SQL> conn / as sysdbaERROR:ORA-09817: Write to audit file failed.Linux-x86_64 Error: 28: No s ...
- 基于GIS的国土空间规划平台建设
本期介绍基于地理信息平台的国土空间规划平台的规划辅助编制应用.在梳理国土空间规划科学流程的基础上,将规划编制各关键环节信息化.工具化.智能化:充分发挥清华同衡大数据与智能模型相结合的定量评估.精准 ...
- 把 STM32 bluepill 变成调试器(daplink)
在调一块 ARM M0 内核的板子,使用官方的 DEMO 板子来调,板子上集成了 daplink 调试器. 为了方便使用,我把目标板跟 daplink 剪开了,然后用杜邦线把 daplink 跟目标板 ...
- WEB安全新玩法 [6] 防范图形验证码重复使用
在完成关键业务操作时,要求用户输入图形验证码是防范自动化攻击的一种措施.为安全起见,即使针对同一用户,在重新输入信息时也应该更新图形验证码.iFlow 业务安全加固平台可以加强这方面的处理. 某网站系 ...
- 深入理解Linux文件系统与日志分析
一.inode和bolck概述 二.链接文件 三.inode节点耗尽故障处理 四.EXT类型文件恢复 五.xfs文件备份和恢复 六.日志文件 一.inode和bolck概述 1.定义 文件数据 文件数 ...
- unity调用安卓方法实现安装apk文件(androidx)
原文链接:点击打开 unity想要实现安装apk文件需要与安卓通讯,所以需要自己来实现安卓代码. 第一步先要新建一个安卓项目提供给unity来使用,我这里使用的工具是android studio4.1 ...
- 01 JumpServer安装
1.0.环境说明: 操作系统类型 主机名称 用户及密码 角色 eth0(Vmnet8) eth1(Vmnet1) 防火墙状态 selinux centos7.4 controlnode root:12 ...
- layui 监听checkbox 、radio、switch选中改变事件
form.on('checkbox(filter)', function(data){ console.log(data.elem); //得到checkbox原始DOM对象 console.log( ...