exe反编译为.py文件
创始人
2025-05-28 17:30:37

介绍公司以前的一个exe包,我们需要查看里面python源码,但是以前的py源码文件找不到,所以只能反编译,介绍一下反编译的过程。

首先准备:

pyinstxtractor.py这个文件,网上很多,自己下载

准备查看二进制的工具Sublime

准备将pyc文件反编译为py文件的uncompyle6

接下来正式开始:

将pyinstxtractor.py和exe文件放到一个文件夹下,cmd进入

执行命令:pyinstxtractor.py preprocess.exe

解析的文件都放在preprocess.exe_wxtracted里面,在里面找到preprocess.pyc文件和struct.pyc文件

用sumline打开这俩个文件:

复制struct.pyc的第一行二进制到preprocess.pyc里面,保存

接下来安装uncompyle6:

执行命令:pip install uncompyle6

安装成功之后,cmd到preprocess.pyc的目录下

执行命令:F:\bianyi>uncompyle6 preprocess.pyc > preprocess.py

小错误记录一下:

Traceback (most recent call last):
File "f:\开发工具\py3.9\lib\site-packages\xdis\load.py", line 300, in load_module_from_file_object
co = marshal.loads(bytecode)
ValueError: bad marshal data (unknown type code)

原因是:复制struct.pyc的第一行二进制到preprocess.pyc里面,没保存

小错误记录:

F:\bianyi>uncompyle6 preprocess.pyc > preprocess.py
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 0
Unknown type 64 @
Traceback (most recent call last):
File "f:\开发工具\py3.9\lib\site-packages\xdis\load.py", line 304, in load_module_from_file_object
co = xdis.unmarshal.load_code(fp, magic_int, code_objects)
File "f:\开发工具\py3.9\lib\site-packages\xdis\unmarshal.py", line 562, in load_code
return um_gen.load()
File "f:\开发工具\py3.9\lib\site-packages\xdis\unmarshal.py", line 176, in load
return self.r_object()
File "f:\开发工具\py3.9\lib\site-packages\xdis\unmarshal.py", line 219, in r_object
return unmarshal_func(save_ref, bytes_for_s)
File "f:\开发工具\py3.9\lib\site-packages\xdis\unmarshal.py", line 517, in t_code
code = to_portable(
File "f:\开发工具\py3.9\lib\site-packages\xdis\codetype\__init__.py", line 200, in to_portable
return codeType2Portable(code, version_triple)
File "f:\开发工具\py3.9\lib\site-packages\xdis\codetype\__init__.py", line 43, in codeType2Portable
return Code3(
File "f:\开发工具\py3.9\lib\site-packages\xdis\codetype\code30.py", line 82, in __init__
self.check()
File "f:\开发工具\py3.9\lib\site-packages\xdis\codetype\code13.py", line 87, in check
assert (
AssertionError: co_code should be one of the types (, , , ); is type

原因是:preprocess.pyc的第一行需要删除掉

删除第一行preprocess.pyc二级制

610d 0d0a 0000 0000 0000 0000 e300 0000

然后把struct.pyc第一行代码粘贴进去

170d 0d0a 089a 775a 0101 0000 e300 0000

再次执行:生成了preprocess.py文件

但是发现一个问题,依赖库文件是空的,没办法编译,还是拿不到python的源代码

介绍pyc:来自网上

1. 什么是 .pyc文件

.pyc文件 就是 Python的字节码(byte-compiled)文件。.py文件运行时,python会自动将其编译成PyCodeObject并写入.pyc文件,再有python虚拟机来执行PyCodeObject

2. 什么时候会生成pyc文件

当 一个模块 被 import 时,或者 .py文件(非top level script)被修改后,则会自动生成.pyc文件,目的是为了加快下次的运行速度。

.pyc文件不会被建立的一个原因,就是没有当前.py文件目录的权限。

python3 会生成一个 __pycache__ 目录,里面就包含pyc文件,一般的命名方式是:文件名.cpython-37.pyc,其中cpython-37是python版本号。

2.1 pyc什么时候会重新生成

• 在生成.pyc文件的同时,会写入了一个Long型的变量,用于记录最近修改的时间。 • 每次载入之前都先检查一下.py文件和.pyc文件的最后修改日期,如果一直,则会读取.pyc文件,否则会读取.py文件

3. 如何删除已有的.pyc文件

find /dir_path -name "*.pyc" | xargs rm -rf

4. 如何手动生成.pyc文件

方法一 参数形式

python -m py_compile target.py

方法二 导入模块

importpy_compilepy_compile.compile('target.py')

方法三 编译所有的.py文件

python -m compileall .

5. 如何阻止生成.pyc文件

方法一 -B 参数

使用 -B 参数

python -B target.py

方法二 设置环境变量

exportPYTHONDONTWRITEBYTECODE=1

方法三 参数设置

importsyssys.dont_write_bytecode=True

相关内容

热门资讯

李雪琴被举报公司存在财务问题,... 红星资本局6月18日消息,昨日晚间,网友“老谢同学之你谢哥”发布微博,其自称“曾是李雪琴公司(北京十...
「午盘」A股三大股指早盘收跌,... A股三大股指6月18日集体小幅低开。盘初短暂冲高后快速下挫,个股呈现普跌态势。从盘面上看,稀土永磁、...
证监会主席吴清:严惩违法输送利... 中经实习记者 孙汝祥 记者 夏欣 北京报道6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,...
吴清:支持科技型上市公司做优做... 6月18日,2025陆家嘴论坛在上海举办,中国证监会主席吴清出席。吴清在主题演讲中表示,更大力度培育...
突然官宣“8个大招”,什么信号... 原创 刘晓博今天上午在2025陆家嘴论坛上,中国人民银行行长潘功胜宣布8项重磅金融政策。这些措施意味...
证监会主席吴清:推动基金份额转... 中经记者 郭婧婷 北京报道6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,推动基金份额转让...
证监会主席吴清:推动股份对价分... 6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,证监会将抓好“并购六条”和重大资产重组管理...
新设科创成长层!证监会主席吴清... 6月18日,2025陆家嘴论坛正式开幕。中国证监会主席吴清出席并发表重要讲话,要点如下:吴清在202...
吴清:将批复全国首批2只数据中... 6月18日,2025陆家嘴论坛在上海举办,中国证监会主席吴清出席。吴清在主题演讲中表示,将进一步强化...
科创板未盈利企业上市和融资,有... 2025.06.18本文字数:3727,阅读时长大约6分钟作者 |第一财经 黄思瑜一年前,“科创板八...
创业板将正式启用第三套标准,支... 6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,证监会将在创业板正式启用第三套标准,支持优...
水井坊:以绿色酿造,守美丽中国... 在中国白酒行业积极推动绿色低碳转型的当下,水井坊以对环境和社会积极履行责任的领跑者,不仅在酿造技艺与...
吴清:适应创新规律的资金形成机... 6月18日,2025陆家嘴论坛在上海举办,中国证监会主席吴清出席。吴清在主题演讲中表示,当前新一轮科...
证监会主席吴清:严惩违法输送利... 6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,证监会将依法从严监管,严惩违法输送利益以及...
PCB概念震荡走强,生益电子股... 6月18日,PCB概念震荡走强,逸豪新材20%涨停;生益电子涨逾10%,股价创历史新高;中京电子涨停...
电芯战国时代开启,阳光电源与宁... 明知是炮灰,锂电企业为何仍然趋之若鹜加入大电芯混战?原创 小海浪 赶碳号科技 2025年06月17日...
亚马逊CEO:生成式AI的推广... 亚马逊 CEO 杰夫·贝索斯近期表示,生成式 AI 的推广将“减少”公司员工人数。这一言论引发了广泛...
私募行业现状如何?来看最新调查... 近年来,随着监管的不断完善,私募行业从快速发展转向稳定发展,规模逐渐向头部机构集中,一批异常、违规私...
证监会主席吴清:全球科技创新进... 6月18日,中国证监会主席吴清在2025陆家嘴论坛上表示,当前新一轮科技革命和产业变革加速引进,全球...
港股红利ETF博时:6月17日... 证券之星消息,6月17日,港股红利ETF博时(513690)融资买入218.27万元,融资偿还112...
福建佳美新材申请600万美元I... 中国定制尼龙长丝产品制造商佳美新材(Camerry New Material Tech)周二(6月1...
凌钢股份:6月17日融资买入2... 证券之星消息,6月17日,凌钢股份(600231)融资买入204.69万元,融资偿还78.36万元,...
证监会主席吴清:无论科技巨头还... 中经实习记者 孙汝祥 记者 夏欣 北京报道6月18日,“2025陆家嘴论坛”在上海开幕。中国证监会主...
上交所:贵阳南明投资(集团)有... 6月18日,上交所发布关于贵阳南明投资(集团)有限责任公司2025年面向专业投资者非公开发行公司债券...
证监会主席吴清:更好发挥科创板... 6月18日,2025陆家嘴论坛在上海举办,中国证监会主席吴清出席。吴清在主题演讲中表示,将更好发挥科...
山海:黄金冲高回落扫盘震荡,等... 山海:黄金冲高回落扫盘震荡,等待趋势力度再爆发! 本周暂时两个交易日的行情,黄金均有一个特点,每次...
港股早盘低开 脑机接口概念表现... 6月18日早盘,港股市场跳空低开。截至发稿时,恒生指数报23800点,下跌0.74%;恒生科技指数报...
科创板未盈利企业上市和融资迎新... 一年前,“科创板八条”明确支持优质未盈利科技型企业上市和融资。如今一年后,成效几何?6月17日,科创...
证监会将推出进一步深化科创板改... 据新华社消息,中国证监会主席吴清6月18日在2025陆家嘴论坛上宣布,将聚焦提升制度的包容性和适应性...
千亿巨头新动作!京东方A回应拟... 6月17日晚间,京东方A(000725.SZ)发布公告称,拟收购咸阳彩虹光电科技有限公司(以下简称彩...