Metadata-Version: 2.4
Name: exe-reverse-gui
Version: 2.0.0
Summary: Extract PyInstaller EXEs and decompile the recovered .pyc back to source (pylift + pycdecompile)
Home-page: https://github.com/hyy-aaa/exe-reverse-gui
Author: hyy
Author-email: hyy@hyysn.cn
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Flask>=3.0
Requires-Dist: pyinstxtractor-ng
Requires-Dist: pycdecompile>=0.1.2
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# EXE Reverse GUI

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/)

**EXE Reverse GUI** is a cross‑platform desktop application with a clean graphical interface (inspired by auto‑py‑to‑exe) that extracts and decompiles PyInstaller‑packaged executables.  
It leverages **pyinstxtractor‑ng** to unpack the EXE and **pylift** (this repo’s own decompiler, work in progress) to turn the resulting `.pyc` files back into readable Python source, all running in separate processes so the UI stays responsive.

> **EXE Reverse GUI** 是一个跨平台的桌面应用程序，提供简洁的图形界面，用于提取并反编译 PyInstaller 打包的可执行文件。  
> 它调用 **pyinstxtractor‑ng** 解包 EXE，然后使用本仓库自带的 **pylift**（制作中）把 `.pyc` 反编译回可读的 Python 源代码，所有操作均在独立进程中运行，保证界面流畅。

### 反编译器 / Decompilers

默认只启用内置的 **pylift**（`pylift/`，纯 Python，每个 Python 版本一个独立 lifter）。
在界面的「**反编译器**」页里可以启用并排序三个外部工具：

| 工具 | 安装方式 | 覆盖版本 |
| --- | --- | --- |
| pycdc (Decompyle++) | 下载 zip 源码包后自动编译（无编译器则保留源码，git 仅作兜底） | 1.0 – 3.15 |
| pycdecompile | PyPI（没有时退回 GitHub 源码安装） | 以包说明为准 |
| uncompyle6 | PyPI | 1.0 – 3.8 |
| decompyle3 | PyPI | 3.7 – 3.8 |
| pychd | PyPI（AI 反编译，需要 OpenAI Key） | 2.7 – 3.13 |

* **优先顺序可调**：列表上下移动，反编译时从上到下依次尝试，失败自动落到下一个；
* **镜像测速**：点了「重新测速」后所有镜像先显示「测速中…」，测好一个就把那一条换成实测毫秒数，
  下载时自动走最快的可用源，也可停用某个源或勾选「仅用此源」；
* **安装一路回退**：pip 工具按「最快镜像 → 其余镜像 → 官方 PyPI」逐个重试；pycdc 先下 zip 快照，
  全部失败才退回 git 克隆，拿到源码后本机有 g++ / cmake 就自动编译；
* **逐个隔离**：每个文件都在子进程里执行，外部反编译器崩溃不会影响界面；
* **下载可取消 / 可卸载**：下载过程中可随时取消（会真的杀掉 pip / git / 下载进程），装好之后可以一键卸载；
* **编译工具链**：pycdc 这类需要编译的工具，可以在「反编译器」页一键下载 ziglang（自带 clang，走 PyPI 镜像，
  比下 MinGW 快得多），也可以删除；本机已有 g++ / clang++ / cmake 时自动使用；
* **下载带帧动画**：下载过程显示逐帧点阵动画、真实进度条与实时日志（日志可一键清空，点击下载会自动滑到最底部）；
* **完成后自动打开输出目录**：默认开启，可在「高级选项」里关闭。

---

## Web Version / Web 版本

> **NEW** —— 除桌面版外，本仓库还提供了一套 **Web 架构**实现（`webapp/`），
> 界面自带一套帧驱动动画引擎，并支持用本地窗口展示。
>
> ```bash
> cd webapp
> pip install -r requirements.txt
> python run.py          # 浏览器模式 → http://127.0.0.1:8756
> python run_window.py   # 本地窗口模式（Edge/Chrome 独立应用窗口）
> ```
>
> - **架构**：Flask 服务端调用 `pyinstxtractor-ng` / `depyo`，界面通过 SSE 推送实时日志，日志面板位于底部。
> - **动效**：`anim.js` 帧驱动缓动引擎统一驱动按钮变色、列表悬浮放大淡入、选中竖条弹入、翻页、逐字文本等效果。
> - 详见 [`webapp/README.md`](https://github.com/hyy-aaa/exe-reverse-gui/blob/main/webapp/README.md)，动画引擎设计见 [`ANIMATION.md`](https://github.com/hyy-aaa/exe-reverse-gui/blob/main/ANIMATION.md)。

---

## Features / 功能

- **Unpack EXE** – Supports PyInstaller archives, including encrypted ones.  
  **解包 EXE** – 支持 PyInstaller 归档，包括加密文件。

- **Decompile .pyc** – Automatically decompiles all extracted `.pyc` files to `.py`.  
  **反编译 .pyc** – 自动将所有解包得到的 `.pyc` 文件反编译为 `.py` 源码。

- **Smart Cleanup** – Removes standard‑library files, Python interpreter DLLs, `.pyd` / `.so` extensions, and other non‑user content, keeping only your original source code and resource files (like images, audio, video).  
  **智能清理** – 自动删除标准库文件、Python 解释器 DLL、`.pyd`/`.so` 扩展等非用户内容，只保留您的源代码和资源文件（如图片、音频、视频）。

- **Real‑time Log** – Watch every step in the built‑in console.  
  **实时日志** – 内置控制台实时显示每一步操作。

- **Multi‑language** – Chinese, English, Russian, French.  
  **多语言支持** – 中文、English、Русский、Français。

- **Advanced Options** – Enable debug mode, generate `.pyasm` assembly, keep raw `.pyc` files, etc.  
  **高级选项** – 支持调试模式、生成 `.pyasm` 汇编文件、保留原始 `.pyc` 等。

- **Fault Recovery** – Automatic retry dialog on failure, process timeout detection.  
  **故障恢复** – 失败时自动弹出重试对话框，内置进程超时检测。

---

## Installation / 安装

Make sure you have **Python 3.8 or later** installed.  
请确保已安装 **Python 3.8 或更高版本**。

### From PyPI (recommended) / 通过 PyPI 安装（推荐）
```bash
pip install exe-reverse-gui
```

### From source / 从源码安装
```bash
git clone https://github.com/hyy-aaa/exe-reverse-gui.git
cd exe-reverse-gui
pip install .
```

After installation, the command `exe-reverse-gui` will be available in your terminal.  
安装完成后，终端中会出现 `exe-reverse-gui` 命令。

---

## Usage / 使用方法

Simply run:  
直接运行：

```bash
exe-reverse-gui
```

or via Python module:  
或通过 Python 模块运行：

```bash
python -m exe_reverse_gui
```

### Steps / 操作步骤

1. Choose the EXE file you want to analyse.  
   选择要分析的 EXE 文件。

2. Select an output directory (defaults to the EXE location).  
   选择输出目录（默认为 EXE 所在目录）。

3. (Optional) Click **Advanced Options…** to fine‑tune the extraction/decompilation parameters.  
   可选：点击**高级选项…** 微调提取/反编译参数。

4. Click **Start Extraction** – the tool will unpack the EXE, decompile all `.pyc` files, merge results, and clean up unnecessary files.  
   点击**开始提取** – 工具将自动解包 EXE、反编译所有 `.pyc`、合并输出、并清理多余文件。

5. When finished, a dialog will point you to the folder containing your recovered source code.  
   完成后会弹出对话框，指引您前往存放恢复后源代码的文件夹。

---

## Dependencies / 依赖

- [PyQt6](https://pypi.org/project/PyQt6/) (>=6.5)  
- [pyinstxtractor‑ng](https://github.com/pyinstxtractor/pyinstxtractor-ng)  
- [depyo](https://github.com/erev0s/depyo)

All are installed automatically when you install `exe-reverse-gui`.  
所有依赖都会在安装 `exe-reverse-gui` 时自动安装。

---

## License / 许可证

This project is licensed under the **MIT License** – see the [LICENSE](https://github.com/hyy-aaa/exe-reverse-gui/blob/main/LICENSE) file for details.  
本项目采用 **MIT 许可证** – 详见 [LICENSE](https://github.com/hyy-aaa/exe-reverse-gui/blob/main/LICENSE) 文件。

---

## Contributing / 贡献

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.  
欢迎提交 Pull Request。如有重大改动，请先创建 Issue 讨论。

---

## Disclaimer / 免责声明

This tool is intended for **legal reverse engineering and educational purposes only**.  
Respect the intellectual property rights of others.  
本工具仅供**合法的逆向工程和学习研究**使用，请尊重他人的知识产权。
