Bor-Code/ReverseLogic-Lab
GitHub: Bor-Code/ReverseLogic-Lab
面向教育目的的逆向工程实验项目,通过十个小型 Windows 程序分析实验教授二进制逆向的基础概念与方法论。
Stars: 0 | Forks: 0
# ReverseLogic-Lab
ReverseLogic-Lab 是一个专注于教育目的的逆向工程项目,主要分析小型的 Windows 可执行文件,并记录程序逻辑在编译后的具体表现形式。
该项目遵循以下简单的工作流程:
```
Source Code -> Compiled Binary -> Runtime Test -> Ghidra Analysis -> Documentation -> Pull Request
```
# 🚨 警告 🚨
**🔴 请务必仅将 GHIDRA 和 X64DBG 工具用于教育目的。 🔴**
本项目的目的并非破解真实软件。
而是为了学习编译后的程序如何表示字符串、函数调用、命令行参数、控制流、编码数据、校验和逻辑以及 Windows API 行为。
## 项目范围
本仓库包含 10 个专项逆向工程实验。
每个实验包含:
- 一个小型的 C 源代码文件
- 一个用于本地测试的已编译 Windows 可执行文件(不纳入 Git 版本控制)
- Ghidra 静态分析
- 运行时测试证据
- 截图
- 一份 `analysis.md` 报告
编译生成的 `.exe` 文件已通过 `.gitignore` 被有意排除在外。
## 使用的工具
- C
- 通过 MSYS2 使用的 GCC / MinGW
- Ghidra
- x64dbg
- Windows 可执行文件
- Windows API
- Markdown
- Git
- GitHub pull request
## 实验
| 实验 | 主题 | 主要焦点 |
|---|---|---|
| 实验 01 | 简单密码检查 | `strcmp`、可见字符串、基础分支 |
| 实验 02 | XOR 编码字符串 | XOR 解码、隐藏字符串、运行时验证 |
| 实验 03 | 栈字符串 | 逐个字符构建字符串 |
| 实验 04 | 反调试检查 | `IsDebuggerPresent`、反调试逻辑 |
| 实验 05 | Windows API 行为 | 导入的 API 及行为分析 |
| 实验 06 | 命令行密码 | `argc`、`argv`、命令行验证 |
| 实验 07 | 许可证密钥模式 | `strlen`、`strncmp`、直接字符检查 |
| 实验 08 | Switch Case 控制流 | `atoi`、数字选项、分支重构 |
| 实验 09 | 校验和验证 | ASCII 求和、基于循环的验证、十六进制常量 |
| 实验 10 | 编码的 API 消息 | XOR 解码结合 `MessageBoxA` |
## 仓库结构
```
ReverseLogic-Lab/
│
├── README.md
│
├── docs/
│ ├── lab-index.md
│ ├── methodology.md
│ ├── tooling-notes.md
│ └── week-1-security-recap.md
│
└── labs/
├── 01-simple-password/
├── 02-xor-encoded-string/
├── 03-stack-strings/
├── 04-anti-debugging/
├── 05-windows-api-behavior/
├── 06-command-line-password/
├── 07-license-key-pattern/
├── 08-switch-case-control-flow/
├── 09-checksum-validation/
└── 10-encoded-api-message/
```
## 文档
详细的项目文档可在 `docs` 文件夹中找到。
| 文档 | 用途 |
|---|---|
| `docs/lab-index.md` | 列出所有实验及其主题、概念和证据 |
| `docs/methodology.md` | 解释项目中使用的逆向工程工作流程 |
| `docs/tooling-notes.md` | 记录在开发和分析过程中使用的工具 |
| `docs/week-1-security-recap.md` | 总结已完成的基础阶段 |
## 涵盖的逆向工程概念
本项目涵盖:
- 硬编码字符串比较
- 二进制文件中的可见字符串
- XOR 编码字符串
- 运行时解码
- 栈字符串
- 局部字符缓冲区
- 命令行参数
- `argc` 和 `argv`
- `strcmp`
- `strlen`
- `strncmp`
- `atoi`
- switch-case 控制流
- 分支重构
- 校验和验证
- ASCII 值
- 十六进制常量
- Windows API 导入
- `IsDebuggerPresent`
- `MessageBoxA`
- `GetComputerNameA`
- `GetWindowsDirectoryA`
- `GetSystemDirectoryA`
- `GetCurrentProcessId`
- Ghidra 反编译器分析
- x64dbg 运行时检查
- 基于 Markdown 的技术报告
## 通用工作流程
每个实验遵循以下工作流程:
1. 编写一个小型 C 程序。
2. 将其编译为 Windows 可执行文件。
3. 运行可执行文件并记录运行时行为。
4. 将二进制文件导入 Ghidra。
5. 运行自动分析。
6. 检查函数、字符串、导入、分支和常量。
7. 将源码行为与反编译输出进行对比。
8. 截取屏幕截图。
9. 编写 `analysis.md` 报告。
10. 通过 GitHub pull request 提交工作。
## Git 工作流程
所有更改均通过分支和 pull request 进行开发。
预期工作流程:
```
main -> feature branch -> pull request -> squash and merge -> main
```
提交信息示例:
```
feat: add xor encoded string lab
feat: add checksum validation lab
docs: finalize reverse logic lab documentation
```
## 状态
当前状态:
```
Foundation phase completed
10 labs completed
Documentation completed
Analysis screenshots added
Pull request workflow used
```
未来的工作可能会深入探讨更高级的逆向工程主题,例如 PE 结构、导入表、基础脱壳、API 监控、进程行为分析以及恶意软件分析报告。
## 教育声明
本项目仅用于教育和个人作品集展示目的。
它不针对真实的商业软件,也不包含任何非法破解活动。标签:Ghidra, Gophish, Windows API, 二进制分析, 云安全运维, 云资产清单, 客户端加密, 教育教程, 端点可见性, 网络安全研究, 逆向工程, 防御加固