python打包的exe反编译_反编译python打包的exe到源代码
前言
简单了解反编译,为保证自己python工程有一定的安全性,尝试反编译文件。
目标
Python exe -> pyc -> py
环境
windows 7
python 3.7
PyInstaller 3.5
工具
uncompyle6 3.6.4 ( 注:安装命令 pip install uncompyle)
archive_viewer.py (注:该文件位于PyInstaller包中PyInstaller\utils\cliutils\archive_viewer.py)
010 editor (字节查看修改,用于补全pyc文件中的缺失部分)
使用方法
用archive_viewer打开exe文件,x命令解压(x)需要的文件,输出到指定文件,并退出(q)
# 法一 单个文件
python archive_viewer.py main.exe
? x struct
to filename? struct.pyc
? q
#########################
# 法二 所有文件
python pyinstxtractor.py main.exe
对比过程,可直接修改要修改的文件。
到工程目录下的__pycache__复制一个文件a.cpython-37.pyc
到解压的main.exe_extracted\PYZ-00.pyz_extracted中找到对应的文件,记为a.pyc
使用010editor打开两个文件,进行对比发现a.pyc少了4个字节,在字节8开始处插入4个0字节后保存(对比发现8到16个字节不同,但是已经可以反编译了,故忽略)
使用uncompyle6 反编译文件pyc到py
uncompyle6 a.pyc > a2.py
uncompyle6 a.cpython-37.pyc > a1.py
生成的py文件相同,且与源代码相同
总结:
1. 使用pyinstxtractor或者archive_viewer将exe文件解码出pyc文件(注,只适用于用pyinstaller编译生成的exe文件)
2. 使用二进制编辑工具,在第8个字节处插入4个0字节
3. 使用uncompyle6反编译pyc文件到py文件。
注:
参考文档:
pyc文件格式
1 最开始4个字节是一个Maigc int, 标识此pyc的版本信息, 不同的版本的 Magic 都在 Python/import.c 内定义
2 接下来四个字节还是个int,是pyc产生的时间(TIMESTAMP, 1970.01.01到产生pyc时候的秒数, 本文就是通过添加4个字节为0的时间戳字段来反编译pyc文件)
3 接下来是个序列化了的 PyCodeObject(此结构在 Include/code.h 内定义),序列化方法在 Python/marshal.c 内定义
Python脚本解压
importuncompyle6
with open("a.py", "w") as file:
uncompyle6.decompile_file("a.pyc", file)
python打包的exe反编译_反编译python打包的exe到源代码相关推荐
- exe反编译_反编译Python生成exe软件(Py3-polySML)
反编译对象为一篇文献上的软件,反编译只是为了了解一些源代码的逻辑. 过程参考文章:python3.7.4反编译生成的.exe 反编译对象:polySML 此对象为python打包,且未进行加密加壳软件 ...
- python制作图形化小游戏_创意编程|Python的GUI简易界面设计测测你的反应力
Python的GUI简易界面设计案例 测测你的反应力 作为初次接触代码编程的你,是不是觉得Python程序除了"码"就是"字"即使是有趣的程序除了烧烧 ...
- java+如何解决反爬虫_反爬虫,到底是怎么回事儿?
原标题:反爬虫,到底是怎么回事儿? 有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」 这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来 ...
- django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件
功能背景 我把自动化校准程序写好后,可以在 Pycharm 中运行 Django 程序.但是,这个程序最终要给检定员用的,我不可能在每个检定员的电脑上安装 Django 编程环境让他们使用.所以,要把 ...
- python 面试题 博客园_常见的python面试问题1
雷锋网按:本文为 AI 研习社编译的技术博客,原文 Top 35 Python Interview Questions and Answers in 2018 ,作者 DataFlair Team. ...
- python底层与机器底层关系_起底 Python 的底层逻辑
原标题:起底 Python 的底层逻辑 本文配图来自美剧<我们窃取秘密:维基解密的故事>. 文 | 图灵社区 推荐 | 编程派公众号(ID:codingpy) 01 一次纯粹的hackin ...
- python中换行的转义符_详解Python中的各种转义符\n\r\t
Python中的各种转义符\n\r\t 转义符 描述 \ 续行符(在行尾时) \\ 反斜杠符号 ' 单引号 " 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 ...
- python怎样打开加密的文件_如何用Python 加密文件
生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...
- python意外缩进引发逻辑错误_如何编写 Python 程序
如何编写 Python 程序 从今以后,保存和运行 Python 程序的标准步骤如下: 对于 PyCharm 用户 打开 PyCharm. 以给定的文件名创建新文件. 输入案例中给出的代码. 右键并运 ...
- python怎么学比较有技巧_怎么学python学的快?学习技巧大分享
为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...
最新文章
- Error in bl_make_text_box(token, drawing_context$gp, drawing_context$yoff_pt) : function ‘Rcpp_preci
- 普通java跑到linux上,JAVA在linux下open too many files
- 云数据库MongoDB全面支持3.4版本,支持多存储引擎
- new arraylist内存_如何避免内部类中的内存泄漏
- php程序里的configini_程序员手册 修改php.ini的几种方法
- C语言的变量作用域及头文件
- 国标 计算机机房,国标相关知识:电子信息系统机房设计规范(GB50174-2008)
- DIY 3.5毫米/MMCX接口的耳机线(无麦)
- 计算机等级考试——四级网络工程师考试大纲
- java考勤表导出_考勤打卡机导出的excel考勤时间表如何生成实用的考勤表
- 你每天都在使用的HTTP协议,到底是什么鬼?
- python 短信_Python怎么接收手机短信?
- RL(Chapter 5): Monte Carlo Methods (MC) (蒙特卡洛方法)
- stimulsoft 变量
- Maven依赖冲突问题解决方案
- html table表格设置滚动条
- 【Updating】二〇二一流水账
- Android shortcut的使用及源码分析
- Android 11.0 ActivityManagerService的启动流程
- 喝过红茶,热过烟花——张国荣《午后红茶》歌词解析
热门文章
- Xcode12 兼容iOS14 及下载链接
- 基于MATLAB的汽车出入库计时系统 _matlab课程设计
- 2、RH850外设时钟选择及配置
- 如何给绘制好的CAD图纸设置密码?
- Android 资源和国际化
- matlab在有限差分法中的应用,MATLAB在有限差分法中的应用
- 金蝶云星空python二开根据物料旧编码链接物料编码做单据
- 计算机ip 地址异常,电脑显示IP地址错误怎么办|电脑无法上网提示IP地址错误的解决方法...
- Ognl表达式的一些用法
- 麻瓜编程python百度云_麻瓜编程 实用主义学Python