QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

查看: 6452|回复: 0

[Python] 如何将Python打包后的exe还原成.py

[复制链接]

等级头衔

积分成就    金币 : 2859
   泡泡 : 1516
   精华 : 6
   在线时间 : 1320 小时
   最后登录 : 2025-6-15

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老活跃会员

联系方式
发表于 2021-12-2 10:25:03 | 显示全部楼层 |阅读模式
一、用到的工具
& g( ~: S# o$ T! b6 F) G
  • pyinstxtractor.py  拆包(解压)工具,将exe文件解压成一个文件夹
  • uncompyle6  pyc反编译工具
  • 010EditorEditor  或者其他二进制查看与修改工具,这里用的010Editor
    ' ]  Z4 `* G2 Z, n' |2 d
二、安装方法
; O( d$ y* Q! O* z
pip install uncompyle6
第一步:解包
/ K& K* S' C9 X7 n" n8 ]
python3 pyinstxtractor.py ***.exe   #  这里替换成你要反编译的exe文件- V  @. W6 l8 Q5 j3 l: p! F
#  会生成一个以 exe文件名+_extracted 的文件夹,这个就是解包后的数据
1.jpg
7 p/ ?* `  P! l9 Y- o第二步:添加头信息
3 f) i9 u% V( |" h$ P       PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要自己添加回去。前四个字节为python编译的版本,后四个字节为时间戳。想要获得编译版本可以查看打包文件里struct的信息6 V' E9 r$ a" B: g: p! Q% O
1). 进入文件夹,找到以exe文件名命名的文件(没有后缀),这个就是目的文件1 ~/ S: N+ Z+ F# S4 K1 `# X
2.jpg : I! E  q0 n" I' L+ y( s, Y
2). 用 010Editor 打开 struct,前八位就是我们想要的信息,将其复制& U9 {" ?& ~# m, i6 J/ w: U
3.jpg % a( y" M- @4 K! h' I
3). 用 010Editor 打开目的文件我这里是 abc_text,将上一步复制的信息插入到开头
; P7 q9 V( m% {2 A修改前:
3 O7 @& `4 l) m+ N1 A% r: t) t* T 4.jpg
1 R3 ~. `7 p* Y( N修改后:3 e  r+ Q% Y+ K1 e0 X" {9 ?2 C
5.jpg
4 ]7 R( ?+ J4 J% j% r5 j4). 将目的文件我这里是 abc_text,添加pyc的后缀) U  n3 M4 f2 [4 @
第三步:逆向目的文件.pyc3 G" |2 x- L2 T; F  ~9 F
1). 其实这里已经可以使用了。了解python的都知道pyc是py文件编译后的二进制文件,因此如果想要分析源码还得继续逆向成.py文件
6 p6 \# v( u: n' [! ~ 6.jpg
+ S3 D; u: E* r" ^; R7 E/ B2). uncompyle6逆向pyc文件  r( X- i) {. I' c. O0 x( E8 e. D
uncompyle6 abc_text.pyc > abc_text.py
7.jpg 8.jpg
& v2 f. I: [. y  T4 q6 O- J 9.jpg : r  |, ^1 \: @! \# H- {
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2025-6-17 13:24

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表