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, 二进制分析, 云安全运维, 云资产清单, 客户端加密, 教育教程, 端点可见性, 网络安全研究, 逆向工程, 防御加固