ergrelet/unlicense

GitHub: ergrelet/unlicense

一款针对 Themida/WinLicense 2.x 和 3.x 保护壳的动态脱壳工具,能够自动恢复原始入口点和被混淆的导入表。

Stars: 1367 | Forks: 243

# Unlicense [![GitHub release](https://img.shields.io/github/release/ergrelet/unlicense.svg)](https://github.com/ergrelet/unlicense/releases) [![最低 Python 版本](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) ![CI status](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e5141390ce134743.svg) 一个 Python 3 工具,用于动态解包受 Themida/WinLicense 2.x 和 3.x # Unlicense [![GitHub 发布版本](https://img.shields.io/github/release/ergrelet/unlicense.svg)](https://github.com/ergrelet/unlicense/releases) [![最低 Python 版本](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) ![CI 状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e5141390ce134743.svg) 一款用于动态脱壳受 Themida/WinLicense 2.x 和 3.x 保护的 可执行文件的 Python 3 工具。 警告:此工具将执行目标可执行文件。如果您不确定目标 可执行文件的具体行为,请务必在虚拟机 (VM) 中使用此工具。 注意:您需要使用 32 位的 Python 解释器来转储 32 位的可执行文件。 ## 功能特性 * 支持 Themida/Winlicense 2.x 和 3.x * 支持 32 位和 64 位 PE 文件(EXE 和 DLL) * 支持 32 位和 64 位 .NET 程序集(仅限 EXE) * 自动恢复原始入口点 (OEP) * 自动恢复(被混淆的)导入表 ## 已知限制 * 不支持 .NET 程序集 DLL * 在大多数情况下无法生成可直接运行的转储文件 * 为使用 Themida 2.x 脱壳的 32 位可执行文件解析导入的过程非常缓慢 * 若要脱壳那些需要授权文件才能启动的 WinLicense 保护的可执行文件,需提供有效的授权文件 ## 使用指南 ### 下载 您可以从“Releases”部分下载由 PyInstaller 生成的可执行文件,或者使用 `git` 拉取项目并使用 `pip` 进行安装: ``` pip install git+https://github.com/ergrelet/unlicense.git ``` ### 使用 如果您不想使用命令行界面 (CLI),可以直接将目标二进制文件 拖放到相应的(32 位或 64 位)`unlicense` 可执行文件上(可在“Releases”部分获取)。 否则,以下是命令行界面 (CLI) 的使用说明: ``` unlicense --help NAME unlicense.exe - Unpack executables protected with Themida/WinLicense 2.x and 3.x SYNOPSIS unlicense.exe PE_TO_DUMP DESCRIPTION Unpack executables protected with Themida/WinLicense 2.x and 3.x POSITIONAL ARGUMENTS PE_TO_DUMP Type: str FLAGS --verbose=VERBOSE Type: bool Default: False --pause_on_oep=PAUSE_ON_OEP Type: bool Default: False --no_imports=NO_IMPORTS Type: bool Default: False --force_oep=FORCE_OEP Type: Optional[Optional] Default: None --target_version=TARGET_VERSION Type: Optional[Optional] Default: None --timeout=TIMEOUT Type: int Default: 10 NOTES You can also use flags syntax for POSITIONAL ARGUMENTS ```
标签:DAST, DLL, EXE, OEP恢复, PE文件分析, Python, Themida, WinLicense, X64, X86, 二进制分析, 云安全运维, 云资产清单, 加壳, 动态脱壳, 反混淆, 导入表修复, 恶意软件分析, 无后门, 漏洞挖掘, 端点检测与响应, 脱壳工具, 脱壳机, 解密, 软件保护, 逆向工程