xuanson26/Windows-Keylogger-Malware-Analysis
GitHub: xuanson26/Windows-Keylogger-Malware-Analysis
该项目通过开发一个基础键盘记录器样本并进行静态与动态逆向分析,帮助安全学习者理解恶意软件行为机制与编译器优化对反编译结果的影响。
Stars: 1 | Forks: 0
# 🛡️ Windows Keylogger:开发与恶意软件分析实验室
## ⚠️ 免责声明
本项目仅出于教育、学术研究和安全意识普及目的而开发。作者不赞成、不支持也不鼓励以任何恶意方式使用此软件。未经授权部署键盘记录器是违法行为,将受到法律制裁。
## 📌 项目概述
本项目包含两个主要部分:
1. **开发:** 基于 Windows API(`SetWindowsHookEx` 或 `GetAsyncKeyState`),使用 C++ 语言构建一个基础的 Keylogger 程序。
2. **分析:** 作为一名 Malware Analyst,对自己生成的可执行文件进行静态分析(Static Analysis)和动态分析(Dynamic Analysis),旨在理解恶意软件如何与操作系统交互,以及 Compiler 如何优化源代码。
## 🛠️ 第一阶段:Keylogger 开发
- **语言:** C++
- **环境/编译器:** MSYS2 (GCC/G++) 或 Visual Studio。
- **核心技术:**
- 通过 Windows Hook 监听键盘事件。
- 将日志记录到本地文件以供分析(为了确保安全,不包含隐藏或网络数据传输功能)。
*(详细源代码位于 `/src` 目录中)*
## 🔍 第二阶段:恶意软件分析实验室(来自你实验室的报告)
### 1. 静态分析(Static Analysis)
#### A. 文件信息与导入地址表(IAT)
使用 **PE-bear** 工具检查文件结构和动态链接库:
- **工具:** PE-bear。
- **目标:** 检查 IAT,检测与 keylogging 相关的敏感 API 函数(例如:`SetWindowsHookEx`、`GetAsyncKeyState`、`CreateFile`、`WriteFile`)。
- **结果:** *(在此处插入你的观察结果,例如:在 Debug 模式下编译的文件保留了大量信息,还是已经被优化了)。*

#### B. 反编译与 Compiler 优化分析
使用 **Ghidra** 将机器码反编译为伪代码(Pseudo-code),并对比 Compiler 的不同优化级别:
* **低度优化情况(例如:`-O0`):**
- 保留了标准的函数结构,包含完整的 `Prologue` 和 `Epilogue`(`push ebp`, `mov ebp, esp`)。
- 易于阅读,几乎与原始源代码呈 1:1 对应。
* **高度优化情况(例如:`-O2`):**
- Compiler 移除了帧指针(Frame Pointer Omission - FPO),不再出现 `push ebp`。
- 局部变量经过优化被直接存入寄存器,而不是保存在 Stack 上。
- 代码结构被打乱,增加了阅读和理解函数结构的难度。

### 2. 动态分析(Dynamic Analysis)
将文件载入 **x32dbg** / **x64dbg** 以观察其实时行为:
- **确定 Base Address 与实际地址:**
- 内存中的加载地址(Base Address):`0x...`
- 计算键盘 Hook 函数或 Main 函数的 Offset,以便准确设置 Breakpoint。
- **观察寄存器与 Stack:**
- 监控按键事件发生时通用寄存器(`EAX`、`EBX`、`ECX`...)的变化。
- 分析在调用系统 Windows API 函数之前,参数是如何被压入 Stack 的。

## 💡 缓解与检测(防御方案)
为了检测和防范类似的 Keylogger:
1. **行为监控:** 使用 EDR/SIEM 解决方案监控异常的系统 Hook 注册行为。
2. **基于特征:** 通过 Yara 规则(Yara Rules)扫描文件中的敏感字符串(strings)和特有的 IAT 结构。
3. **安全提示:** 在输入敏感数据时,使用虚拟键盘(On-Screen Keyboard)或 Anti-Keylogger 软件。
标签:C++, DAST, 云资产清单, 恶意软件分析, 教育目的, 数据擦除, 端点可见性, 逆向工程, 键盘记录器