RamadhanAdam/c-reversing-and-malware-analysis

GitHub: RamadhanAdam/c-reversing-and-malware-analysis

一个系统化复习 C 语言核心概念的练习与笔记仓库,为逆向工程和恶意软件分析奠定语言基础。

Stars: 0 | Forks: 0

# C 练习 我整理这个项目是为了复习 C 语言。我已经很久没碰过它了,需要重新回顾指针、内存管理、struct 和位级别的操作,主要是因为我的论文工作涉及阅读原始的 PE 二进制文件,最终还要进行恶意软件分析,而如果没有扎实的 C 语言基础,你就无法做好这些工作。 `practice/module_*/` 是我针对 mooc.fi C-MOOC 练习编写的实践代码。 `tutorials/` 是我在学习过程中记录的关于每个主题的笔记。 当我忘记某些东西时,我也会把这个仓库当作快速参考,比如 `realloc` 的行为或指针优先级规则。 相关项目:[raw-pe](https://github.com/RamadhanAdam/raw-pe),在这个项目中我使用 NASM 手动构建了一个 PE 可执行文件。 ## 如何使用 每个模块文件夹都包含实践代码,通常每个练习对应一个 .c 文件。要编译并运行某个文件: ``` make practice/module_1_intro_and_basics/array_sum ./practice/module_1_intro_and_basics/array_sum ``` 或者不使用 Makefile 直接编译: ``` gcc -Wall -g -o array_sum practice/module_1_intro_and_basics/array_sum.c ./array_sum ``` 检查内存错误: ``` valgrind --leak-check=full ./array_sum ``` ## 结构 | 文件夹 | 主题 | |---|---| | `practice/module_1_intro_and_basics/` | 循环、条件判断、指针和数组入门 | | `practice/module_3_data_structures/` | Struct、指向 struct 的指针、ADT、链表(`vector/` 包含动态数组和链表) | | `practice/module_4_arrays_and_bits/` | Union、enum、多维数组、位运算(`bit_operations/` 子文件夹) | | `practice/module_5_advanced_features/` | 文件 I/O、预处理器、varargs、函数指针 | | `tutorials/` | 每个模块的笔记和练习描述 | 没有 `module_2/` 文件夹。在实践中,指针、数组和字符串最终被放在了 `practice/module_1_intro_and_basics/` 中,尽管该主题的笔记是一个单独的文件(`02_pointers_arrays_strings.md`)。文件夹编号与我实际构建的内容相对应,而不是课程本身的编号。 每个模块都有自己的 README,列出了其中的内容。 ## 参考 `C_CHEATSHEET.md` 包含编译器标志、valgrind 用法以及我总是忘记的陷阱。 ## 致谢 练习和课程结构来自 mooc.fi。这里的所有内容都是我自己的实践代码和笔记。 ## 许可证 MIT,详见 `LICENSE`。仅涵盖我的代码和笔记,不包括 mooc.fi 的材料。
标签:位运算, 学习笔记, 客户端加密, 指针与内存, 数据结构, 编程练习