ahmxdniazi/reverse-engineering-xor-password

GitHub: ahmxdniazi/reverse-engineering-xor-password

一份完整的 IDA Pro 静态逆向工程演练文档,演示如何通过分析 PE64 二进制文件中的 XOR 混淆机制恢复隐藏密码。

Stars: 0 | Forks: 0

Reverse Engineering Banner # 🔐 逆向工程与恶意软件静态分析 ### 通过 IDA Pro 破解 XOR 密码 — 完整演练
[![IDA Pro](https://img.shields.io/badge/Tool-IDA%20Pro-blue?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgo=&logoColor=white)](https://hex-rays.com/) [![语言](https://img.shields.io/badge/Analysis-Static-red?style=for-the-badge)]() [![技术](https://img.shields.io/badge/Technique-XOR%20Decryption-orange?style=for-the-badge)]() [![难度](https://img.shields.io/badge/Difficulty-Intermediate-yellow?style=for-the-badge)]() [![状态](https://img.shields.io/badge/Status-Solved%20✓-brightgreen?style=for-the-badge)]()

## 📖 概述 本项目记录了使用 **IDA Pro** 对受密码保护的执行文件进行完整**静态逆向工程**的工作流程。该二进制文件使用**密钥为 `0x5A` 的 XOR 混淆**来隐藏其密码——这是一种恶意软件作者为逃避基于字符串的检测而常用的技术。 通过本次分析,我们: - 在 IDA Pro 中加载并导航 Windows PE 二进制文件 - 使用 Strings 窗口识别混淆的字符串 - 定位 `decrypt` 函数并追踪 XOR 密钥 - 手动解密所有加密字节以恢复明文密码 - 在实际运行的应用程序上验证破解出的密码 **恢复的密码:** `MalwareLab123` ## 🧰 工具与环境 | 工具 | 版本 | 用途 | |------|---------|---------| | **IDA Pro** | 7.x (64位) | 静态反汇编与分析 | | **Windows 10** (虚拟机) | x64 | 目标执行环境 | | **Python 3** | 3.x | XOR 解密脚本 | | **VirtualBox** | 最新版 | 隔离沙箱环境 | ## 🗂️ 仓库结构 ``` 📁 ida-re-xor-crack/ ├── 📄 README.md ← You are here ├── 📄 ANALYSIS_REPORT.md ← Full technical write-up ├── 📄 xor_decrypt.py ← Standalone XOR decryption script ├── 📁 screenshots/ │ ├── 01_Loading_EXE_into_IDA_PRO.jpg │ ├── 02_View_Strings_IDA_PRO.jpg │ ├── 03_Open_Decrypt_Function.jpg │ ├── 04_XOR_Key_5Ah_Found.jpg │ ├── 05_Encrypted_Strings_Data.jpg │ ├── 06_XOR_Decryption_Table.jpg │ ├── 07_Password_Recovered.jpg │ └── 08_Success_Correct_Password.jpg └── 📁 scripts/ └── batch_xor_decrypt.py ← Batch decryption tool ``` ## 🔬 分析演练 ### 第 1 步 — 将目标二进制文件加载到 IDA Pro 将可执行文件 `Task.exe` 加载到 IDA Pro 中进行静态分析。IDA 执行其初始自动分析,识别函数并填充函数列表。我们可以立即观察到关键函数,包括 `decrypt`、`WinMain` 和 `WindowProc`。
![第 1 步 - 加载 EXE](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4150dd8f3a140034.jpg) *IDA Pro 加载 Task.exe — 左侧面板可见函数列表*
### 第 2 步 — 枚举字符串并发现异常 使用 **View → Open Subviews → Strings** (`Shift+F12`),我们枚举二进制文件中的所有可读字符串。在正常的 UI 字符串中,例如 `"Enter Password:"`、`"Submit"` 和 `"Correct Password! Congratulations!"`,我们注意到一个可疑的乱码字符串:**`;6-;(?`**——这就是存储在 `.data` 节中的加密密码。
![第 2 步 - Strings 窗口](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c0a6bc9ae8140040.jpg) *Strings 窗口揭示了混淆的密码 `;6-;(?` 以及可读的 UI 字符串*
### 第 3 步 — 导航到 `decrypt` 函数 双击可疑字符串会导航到 `.data` 节中的地址 `0x140003000`。交叉引用 (XREF) 指向名为 **`decrypt`** 的函数。我们跟随 XREF 检查解密逻辑。
![第 3 步 - Decrypt 函数](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8cd712ca96140045.jpg) *0x140003000 处的 enc_password — XREF 直接指向 decrypt 例程*
### 第 4 步 — 识别 XOR 密钥:`0x5A` 在 `decrypt` 函数的反汇编代码中,我们观察到了关键指令: ``` lea rdx, enc_password ; Load address of encrypted password movzx eax, byte ptr [rax+rdx] ; Load one encrypted byte xor eax, 5Ah ; XOR with key 0x5A ``` 常量 **`5Ah` (十进制 90)** 就是我们的 XOR 密钥。这种单字节滚动 XOR 被应用于加密密码字符串的每个字符。
![第 4 步 - XOR 密钥](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/adaa690a1e140051.jpg) *显示 `xor eax, 5Ah` 的汇编视图 — 解密密钥已暴露*
### 第 5 步 — 映射加密字节 检查从 `0x140003000` 开始的原始数据,我们枚举出加密字节: | 地址 | 十六进制字节 | ASCII | |---------|----------|-------| | 140003000 | `17h` | — | | 140003001 | `3Bh` | `;` | | 140003002 | `36h` | `6` | | 140003003 | `2Dh` | `-` | | 140003004 | `3Bh` | `;` | | 140003005 | `28h` | `(` | | 140003006 | `3Fh` | `?` | | ... | ... | ... |
![第 5 步 - 加密字符串](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/66ad7e999d140057.jpg) *.data 节中的原始加密字节 — 每个字节与 0x5A 进行 XOR 运算*
### 第 6 步 — 执行 XOR 解密 对每个字节应用密钥为 `0x5A` 的 XOR 运算,揭示了明文字符:
![第 6 步 - XOR 表](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/d2fafa746c140103.jpg) *完整的 XOR 解密表 — 加密字节 → 明文字符*
完整的解密表: | 地址 | 加密值 | XOR `5Ah` | 十进制 | 字符 | |---------|-----------|-----------|---------|-----------| | 140003000 | `17h` | `4Dh` | 77 | **M** | | 140003001 | `3Bh` | `61h` | 97 | **a** | | 140003002 | `36h` | `6Ch` | 108 | **l** | | 140003003 | `2Dh` | `77h` | 119 | **w** | | 140003004 | `3Bh` | `61h` | 97 | **a** | | 140003005 | `28h` | `72h` | 114 | **r** | | 140003006 | `3Fh` | `65h` | 101 | **e** | | 140003007 | `16h` | `4Ch` | 76 | **L** | | 140003008 | `3Bh` | `61h` | 97 | **a** | | 140003009 | `38h` | `62h` | 98 | **b** | | 14000300A | `68h` | `32h` | 50 | **1** | | 14000300B | `68h` | `32h` | 50 | **2** | | 14000300C | `69h` | `33h` | 51 | **3** | **🔓 解密后的密码:`MalwareLab123`** ### 第 7 步 — 输入恢复的密码 将解密后的密码输入到应用程序的登录对话框中。
![第 7 步 - 输入密码](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4fc8fc667d140108.jpg) *将恢复的密码 `MalwareLab123` 输入到安全登录对话框中*
### 第 8 步 — 验证成功 ✅ 应用程序确认密码正确——分析完成。
![第 8 步 - 成功](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/353b26319d140114.jpg) *“Correct Password! Congratulations!” — XOR 解密成功*
## 🐍 XOR 解密脚本 ``` # xor_decrypt.py — 从 IDA Pro 分析中解密 XOR 混淆的字符串 encrypted_bytes = [0x17, 0x3B, 0x36, 0x2D, 0x3B, 0x28, 0x3F, 0x16, 0x3B, 0x38, 0x68, 0x68, 0x69] XOR_KEY = 0x5A decrypted = ''.join(chr(b ^ XOR_KEY) for b in encrypted_bytes) print(f"[+] XOR Key: 0x{XOR_KEY:02X} ({XOR_KEY})") print(f"[+] Encrypted bytes: {[hex(b) for b in encrypted_bytes]}") print(f"[+] Decrypted password: {decrypted}") ``` **输出:** ``` [+] XOR Key: 0x5A (90) [+] Encrypted bytes: ['0x17', '0x3b', '0x36', '0x2d', '0x3b', '0x28', '0x3f', '0x16', '0x3b', '0x38', '0x68', '0x68', '0x69'] [+] Decrypted password: MalwareLab123 ``` ## 🧠 核心要点 - **XOR 混淆**是一种简单但常用于向静态扫描器隐藏字符串的技术 - **单字节 XOR 密钥**在反汇编代码中作为 `XOR` 指令的常量操作数直接可见 - IDA Pro 的 **XREF 系统**使得追踪加密数据的引用和处理位置变得非常容易 - 始终通过在真实二进制文件上运行候选密码来**验证您的解密** - 现代恶意软件使用**多字节、滚动或密钥调度的 XOR** —— 相同的方法论在更高的复杂性下依然适用 ## 🛡️ 防御意义 | 指标 | 检测方法 | |-----------|-----------------| | `.data` 节中的乱码字符串 | 针对不可打印字节序列的 YARA 规则 | | XOR 解码循环模式 | 行为沙箱分析 | | 短单字节 XOR 密钥 | 静态字节熵分析 | | 运行时字符串解密 | API 监控 / 动态追踪 | ## 📚 参考文献与延伸阅读 - [IDA Pro 文档](https://hex-rays.com/ida-pro/) - [恶意软件分析师手册](https://www.wiley.com/en-us/Malware+Analyst%27s+Cookbook) - [实用恶意软件分析 — Sikorski & Honig](https://nostarch.com/malware) - [FLARE-ON 挑战赛存档](https://flare-on.com/) - [OpenSecurityTraining2 — 逆向工程](https://ost2.fyi/)
**用 ❤️ 为网络安全社区构建** *静态分析 | 逆向工程 | 恶意软件研究* ![访问者](https://visitor-badge.laobi.icu/badge?page_id=ida-re-xor-crack)
标签:Conpot, DAST, DOS头擦除, IDA Pro, PE64分析, Walkthrough, Windows安全, XOR解密, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 密码破解, 异或混淆, 恶意软件分析, 情报收集, 教程, 漏洞研究, 逆向工具, 逆向工程, 静态分析