Pyinstaller Repack 指南
大一牲,想要Patch一个抢学校图书馆座位的软件,却困于Pyinstaller程序的重打包,以此为契机研究了一下Repack的完整流程,避免接触难懂难修改的字节码,并使用了一个几乎无人知晓的工具pyinstaller-repacker
(截至这篇文章完稿,仅有4个star)
0. 目标
本指南将用这个简单的例子教你如何:
-
导出程序中所有的 pyc
文件 -
反编译并阅读程序源码 -
直接对源码进行修改,并Repack一个修改版
1. 准备工具
-
查看源程序Python版本的工具:https://github.com/extremecoders-re/pyinstxtractor -
Repack工具:https://github.com/pyinstxtractor/pyinstaller-repacker -
在线反编译器:https://pylingual.io/ -
一个任意版本的 Python环境 https://python.org/
2. 解包源程序
-
查看源程序打包使用的Python版本:
如图得知源程序打包使用的Python版本为 3.8
,所以我们要安装一个3.8
版本的Python环境(此处不作管理多Python版本的教程,请自行管理环境),并在对应的Python版本中安装所需的依赖:pip install lxml lief
-
使用对应版本的Python环境运行
pyinstaller-repacker
脚本,解包源程序:python .pyinst-repacker.py extract [源程序名]
运行至 [+] Done!
时,即为完成解包
3. 反编译源码
-
进入目录 [源程序名]-repacker/FILES
,在此处即可找到程序的入口点pyc,将其拖入PyLingual反编译器进行反编译: 如图,发现入口点启动了igotolib_editable
包含的App窗口,接着分析该文件 -
进入目录 [源程序名]-repacker/FILES/PYZ-00.pyz
,找到其中的igotolib_editable.pyc
,拖入反编译器: 找到购买检测逻辑
4. 修改与重新打包
-
点击反编译器右上角的蓝色下载按钮,即可将源码下载至本地。 -
完全删除 status
检测逻辑,并加上一些Cracked信息: ] -
使用对应版本的Python环境将修改后的源码编译为 pyc
文件:python -m py_compile [源码]
: 如图,将会生成一个__pycache__
文件夹,内含的文件即为修改后的pyc
文件 -
将修改后的 pyc
文件重命名为被替换的pyc
文件名称,替换原pyc
文件后,重新打包为exe
:python .pyinst-repacker.py build .[源程序名]-repacker
等待一段时间后运行至[+] Done!
时,即为完成打包,在目录[源程序名]-repacker
中即可找到Repack后的程序。
5. 大功告成
测试程序,运行正常:
6. 说明
-
使用到的两个工具 pyinstxtractor
与pyinstaller-repacker
已上传至附件 -
即使使用的Python版本不对应, pyinstaller-repacker
也能够从pyz中解压出文件,但是会导致无法反编译,所以请务必使用与源程序相同的Python版本!! -
经测试,PyLingual能够正确反编译3.13及以下所有版本的pyc
原文始发于微信公众号(吾爱破解论坛):Pyinstaller Repack 指南
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论