bozopr00x/Onyx-Packer

GitHub: bozopr00x/Onyx-Packer

Onyx 是一款将 Python 脚本编译为原生二进制文件的打包器,通过多层加密与反调试机制有效保护源码并规避逆向分析。

Stars: 2 | Forks: 0

# Onyx Packer Onyx 是一个 Python 到原生二进制的编译器,它将 `.py` 脚本转换为独立的 Windows 可执行文件。它应用了多层保护,包括 Cython 编译、XOR 加密、反调试检查以及 RunPE 加密阶段,以生成加固的输出二进制文件。 ## 截图

Onyx - Home     Onyx - Info

## 目录 - [功能特性](#features) - [环境要求](#requirements) - [安装](#installation) - [使用方法](#usage) - [GUI 模式](#gui-mode) - [CLI 模式](#cli-mode) - [保护模式](#protection-modes) - [Native 模式](#native-mode-recommended) - [Layered 模式](#layered-mode) - [架构](#architecture) - [项目结构](#project-structure) - [配置](#configuration) - [更新日志](#changelog) - [贡献](#contributing) - [许可证](#license) ## 功能特性 - **Cython 编译**:将 Python 源代码转换为编译后的 C 扩展(`.pyd`),以剥离可读的源代码。 - **XOR 加密层**:在嵌入之前,使用每次构建随机的 32 字节密钥对编译后的二进制文件进行加密。 - **C++ Loader 生成**:生成一个原生 C++ loader,在运行时解密并加载受保护的模块。 - **反调试保护**:包含 `IsDebuggerPresent`、`CheckRemoteDebuggerPresent`、Frida 检测、`NtSetInformationThread` (ThreadHideFromDebugger) 以及调试器追踪检查。 - **编译时字符串混淆**:使用基于模板的 MetaString 混淆(ADVobfuscator 风格),使敏感字符串永远不会以明文形式出现在二进制文件中。 - **RunPE 加密阶段**:将最终的可执行文件包装在一个进程空心化(process-hollowing)存根中,以增加额外的保护层。 - **单体输出**:Native 模式将所有内容链接到单个 `.exe` 中,没有外部 `.pyd` 依赖。 - **GUI 界面**:使用 pywebview 构建的简洁、深色主题的桌面 GUI,支持拖放编译。 - **CLI 支持**:完整的命令行界面,用于自动化和脚本工作流。 - **唯一构建 ID**:每次编译都会生成一个随机构建标识符,从而产生唯一的模块名称和文件签名。 ## 环境要求 - **操作系统**:Windows 10 / 11 (x64) - **Python**:3.8 或更高版本 - **C++ 编译器**:Microsoft Visual C++ Build Tools (MSVC) - 通过 [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 安装 - 选择 "Desktop development with C++" 工作负载 - **Python 包**: - `pywebview` -- 桌面 GUI 框架 - `Cython` -- Python 到 C 编译器 - `pycryptodome` -- 加密原语 - `setuptools` -- 构建系统 ## 安装 1. 克隆仓库: ``` git clone https://github.com/bozopr00x/Onyx-Packer.git cd Onyx-Packer ``` 2. 安装 Python 依赖: ``` pip install -r requirements.txt ``` 3. 验证 MSVC Build Tools 已安装并可访问。打开终端并运行: ``` cl.exe ``` 如果找不到 `cl.exe`,请打开 **Developer Command Prompt for Visual Studio** 或将 MSVC 路径添加到您的环境变量中。 ## 使用方法 ### GUI 模式 启动图形界面: ``` python run.pyw ``` 步骤: 1. 点击放置区域或将 `.py` 文件拖放到其上。 2. 选择保护模式(Native 或 Layered)。 3. 点击 **COMPILE**。 4. 输出文件将在当前工作目录中生成。 ### CLI 模式 直接运行编译器引擎: ``` python src/Onyx.py ``` 您将收到提示选择模式: ``` [?] Target Python file: payload.py [?] Select Mode (1/2) [1]: 1 ``` 或者将目标作为参数传递: ``` python src/Onyx.py payload.py ``` ### 输出文件 | 模式 | 输出 | 描述 | |--------|-------------------------------|----------------------------------------------| | Native | `_native_protected.exe` | 带有 RunPE 存根的单体可执行文件 | | Layered| `_protected.pyd` + `_run.exe` | 带有原生 loader 的加密 PYD 模块 | ## 保护模式 ### Native 模式(推荐) 完整的编译流程: ``` Python Source -> Cython (.pyx) -> C Extension (.pyd / .obj) -> Static Linked EXE (with embedded Python init) -> RunPE Crypter Stub (final .exe) ``` 这将生成一个单一的 `.exe` 文件。原始 Python 源代码被编译为 C 对象,与包含字符串混淆和反调试检查的原生 loader 链接,然后包装在 RunPE 进程空心化存根中。对于 Detect It Easy (DIE) 等分析工具,输出二进制文件显示为标准的 MSVC 编译可执行文件。 ### Layered 模式 一种两阶段方法: ``` Python Source -> Cython PYD (Layer 1) -> XOR Encrypted + Embedded in C++ Loader (Layer 2) -> Protected PYD + Native EXE Launcher ``` 这将生成两个文件:一个加密的 `.pyd` 模块和一个原生 `.exe` 启动器。加密的 PYD 在运行时被解密到临时隐藏文件中,加载到 Python 解释器中,并安排在重启时删除。 ## 架构 ``` +-----------------+ | Python Source | +--------+--------+ | +--------v--------+ | Cython Compiler | | (source -> .pyd) | +--------+--------+ | +-------------+-------------+ | | +--------v--------+ +--------v--------+ | Native Mode | | Layered Mode | +--------+--------+ +--------+--------+ | | +--------v--------+ +--------v--------+ | Static Linker | | XOR Encrypt PYD | | + Anti-Debug | | + C++ Loader | | + String Obfusc | | + Anti-Debug | +--------+--------+ +--------+--------+ | | +--------v--------+ +--------v--------+ | RunPE Crypter | | EXE + PYD Pair | | (Final .exe) | +--------+--------+ +--------+--------+ | +--------v--------+ | Protected Output | +-----------------+ ``` ### 反调试检查 以下检查被嵌入到多个阶段(Cython 守卫、C++ loader 和 RunPE 存根): | 检查 | 方法 | |-----------------------------|-------------------------------------| | 内核调试器 | `IsDebuggerPresent()` | | 远程调试器 | `CheckRemoteDebuggerPresent()` | | Frida agent | `GetModuleHandleW("frida-agent.dll")` | | Python trace | `sys.gettrace()` | | 线程隐藏 | `NtSetInformationThread(0x11)` | ## 项目结构 ``` Onyx-Packer/ ├── run.pyw # GUI entry point ├── requirements.txt # Python dependencies ├── LICENSE # Project license ├── README.md # This file └── src/ ├── Onyx.py # Core compiler engine (CLI + API) └── gui.py # GUI application (pywebview + HTML/CSS/JS) ``` ### 源码分解 - **`Onyx.py`** -- 包含 `OnyxCompiler` 类及其所有编译逻辑:Cython 转译、XOR 加密、C++ 代码生成、MSVC 编译、静态链接以及 RunPE 加密构建器。 - **`gui.py`** -- 使用 pywebview 实现桌面 GUI,带有嵌入式 HTML/CSS/JS 界面。提供拖放文件加载、模式选择、实时控制台输出以及深色玻璃主题 UI。 ## 配置 Onyx 不使用配置文件。所有行为通过编译时的模式选择来控制。 | 参数 | 默认值 | 描述 | |-----------------|------------|--------------------------------------| | 保护模式 | Native (1) | 单体 EXE 或 Layered EXE+PYD | | 加密密钥 | 随机 | 每次构建生成的 32 字节密钥 | | 构建 ID | 随机 | 用于唯一命名的 6 字节十六进制 token | | 子系统 | WINDOWS | 执行时不显示控制台窗口 | C++ 编译默认使用 `/O2` 优化和 `/MT` 静态链接。字符串混淆密钥源自编译时的 `__TIME__` 宏,这使得每次构建产生不同的加密字符串。 ## 更新日志 ### v1.0.0 - 首次发布 - 基于 Cython 的 Python 到原生编译 - 两种保护模式:Native(单体)和 Layered(EXE + PYD) - 带有每次构建随机密钥的 XOR 加密 - 带有反调试检查的 C++ loader - RunPE 进程空心化加密阶段 - 编译时字符串混淆(ADVobfuscator 风格) - 支持拖放的桌面 GUI - 用于脚本化构建的 CLI 界面 ## 许可证 本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE)。 ## 免责声明 此工具仅供授权的安全研究和合法的软件保护目的提供。作者不对任何误用负责。请使用时遵守所有适用的法律法规。
标签:Cython, C++开发, DNS 反向解析, DOM解析, GitHub Advanced Security, Python编译器, RunPE, SSH蜜罐, Windows可执行文件, 二进制转换, 云资产清单, 代码混淆, 加壳工具, 加密工具, 反调试, 安全加固, 安全意识培训, 恶意代码分析, 源码保护, 网络安全, 进程注入, 逆向工具, 逆向工程, 配置文件, 隐私保护