getfromcode

中科大老师全程讲解Linux内核分析视频教程 共23集

后端开发
课程简介

为什么从底层倒推比死记硬背更有效 很多开发者在看 Linux 内核时,习惯直接打开源码目录,结果被复杂的宏定义和数据结构劝退。这门课的核心价值在于它采用逆向思维:先建立底层的“三个法宝”——汇编、栈帧与调用约定,再逐步向上推演操作系统是如何在这些基础构件上构建起来的。这种自底向上的路径,能让你真正理解代码在机器上的执行逻辑,而不仅仅是停留在 API 调用的…

已有 1 人浏览 发布 2026-10-08 更新 2026-10-27

为什么从底层倒推比死记硬背更有效

很多开发者在看 Linux 内核时,习惯直接打开源码目录,结果被复杂的宏定义和数据结构劝退。这门课的核心价值在于它采用逆向思维:先建立底层的“三个法宝”——汇编、栈帧与调用约定,再逐步向上推演操作系统是如何在这些基础构件上构建起来的。这种自底向上的路径,能让你真正理解代码在机器上的执行逻辑,而不仅仅是停留在 API 调用的表层。

课程从 X86 寄存器模型讲起,通过 `mov`、`push`、`pop`、`call`、`ret` 等核心指令,拆解 C 程序到汇编的映射关系。你不再是抽象地理解“函数调用”,而是能亲手在反汇编结果中定位参数传递路径、局部变量存储位置以及返回地址的跳转逻辑。这种视角转换,是打通操作系统底层认知的关键一步,也是后续理解进程切换、中断处理等高阶概念的必要前提。

门槛与学习路径建议

这门课适合有一定 C 语言基础的开发者,不要求你精通汇编,但需要你能读懂基本的指针操作和函数调用。如果你平时主要写 Java 或 Python,建议先补齐 C 语言指针部分再入手。

建议按以下顺序学习:先完整观看“X86 汇编基础”与“反汇编简单 C 程序”两部分,建立对机器指令执行流的直观感受;接着重点研读“操作系统是如何工作的”章节,深入理解堆栈框架在函数嵌套调用中的动态变化;最后结合配套文档《Foundations For Hacking Linux》,将实践观察升华为系统性认知。不要跳步,底层逻辑的漏洞会在后续学习中不断放大。

学完产出与资料用法

完成本课程后,你将具备独立分析内核行为的能力。面对一个复杂的系统调用栈,你能快速识别出用户态到内核态的切换边界;在排查段错误或性能瓶颈时,你能通过反汇编结果精准定位问题根源;在阅读其他开源项目源码时,你能准确追踪参数在多层函数间的传递路径,从而做出更准确的工程判断。

资料包中的执行过程演示动画配合视频讲解,建议在练习时同步对照观察。每次反汇编练习后,尝试手动绘制堆栈变化图,这是检验你是否真正理解“三个法宝”的最佳方式。只有当你能独立解释每一行汇编指令对寄存器状态的修改时,才算真正掌握了进入内核世界的入场券,才能在下一次遇到内核相关问题时不再无从下手。

课程介绍

1.存储程序计算机工作模型 HowtheComputerWorks.pdf 存储程序计算机工作模型.mp4 2.X86汇编基础 1.X86 Registers.mp4 2.X86汇编指令一(mov指令及几种内存寻址方式).mp4 3.X86汇编指令二(push、pop、call、ret).mp4 4.分析几个汇编指令片段(一).mp4 5.分析几个汇编指令片段(二).mp4 3.反汇编一个简单的C程序分析其汇编指令执行过程 1.反汇编一个简单的C程序.mp4 2.C程序和对应的汇编指令.mp4 3.完整汇编程序执行过程分析.mp4 执行过程演示.gif 4.操作系统是如何工作的? 1.三个法宝.mp4 2.深入理解函数调用堆栈.mp4 3.参数传递与局部变量.mp4 FoundationsForHackingLinux.pdf 计算机是如何工作的?(总结)——三个法宝.txt 5.利用my

课程目录

1.存储程序计算机工作模型 HowtheComputerWorks.pdf 存储程序计算机工作模型.mp4 2.X86汇编基础 1.X86 Registers.mp4 2.X86汇编指令一(mov指令及几种内存寻址方式).mp4 3.X86汇编指令二(push、pop、call、ret).mp4 4.分析几个汇编指令片段(一).mp4 5.分析几个汇编指令片段(二).mp4 3.反汇编一个简单的C程序分析其汇编指令执行过程 1.反汇编一个简单的C程序.mp4 2.C程序和对应的汇编指令.mp4 3.完整汇编程序执行过程分析.mp4 执行过程演示.gif 4.操作系统是如何工作的? 1.三个法宝.mp4 2.深入理解函数调用堆栈.mp4 3.参数传递与局部变量.mp4 FoundationsForHackingLinux.pdf 计算机是如何工作的?(总结)——三个法宝.txt 5.利用mykernel实验模拟计算机硬件平台 1.mykernel实验背后涉及的思想.mp4 2.利用mykernel实验模拟计算机硬件平台.mp4 mykernel实验指导.txt 6.在mykernel基础上构造一个简单的操作系统内核 1.C代码中嵌入汇编代码的写法.mp4 2.一个简单的操作系统内核源代码.mp4 3.运行这个精简的操作系统内核.mp4 7.Linux内核源代码简介 1.Linux内核源代码 8.构造一个简单的Linux系统 1.构造一个简单的Linux系统MenuOS 实验指导 9.跟踪调试Linux内核的启动过程 1.使用gdb跟踪调试Linux内核的方法.mp4 2.简单分析一下start_kernel.mp4 Linux内核启动过程相关的参考资料.txt 10.用户态、内核态和中断 1.用户态、内核态和中断 11.系统调用概述 1.系统调用概述.mp4 SystemCall.pdf 12.使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 1.使用库函数API获取系统当前时间.mp4 2.C代码中嵌入汇编代码的写法.mp4 3.使用C代码中嵌入汇编代码触发系统调用获取系统当前时间.mp4 13.给MenuOS增加time和time-asm命令 1.给MenuOS增加time和time-asm命令 14.使用gdb跟踪系统调用内核函数sys_time 1.使用gdb跟踪系统调用内核函数sys_time 15.系统调用在内核代码中的处理过程 1.系统调用在内核代码中的工作机制和初始化.mp4 2.简化后便于理解的system_call伪代码.mp4 3.简单浏览system_call到iret之间的主要代码.mp4 16.进程的创建 使用GDB跟踪创建新进程的过程.wmv 创建的新进程是从哪里开始执行的.wmv 浏览进程创建过程相关的关键代码.wmv 理解进程创建过程复杂代码的方法.wmv 进程的创建概览及fork一个进程的用户态代码.wmv 进程的创建的创建和撤销资料参考.txt 17.进程的描述 进程描述符task_struct数据结构(一).wmv 进程描述符task_struct数据结构(二).wmv 18.预处理编译链接和目标文件的格式 可执行程序是怎么得来的.wmv 新建文本文档.bat 目标文件的格式ELF.wmv 静态链接的ELF可执行文件和进程的地址空间.wmv 预处理编译和链接相关命令参考.txt 19.可执行程序共享库和动态链接 可执行程序共享库和动态链接.txt 装载可执行程序之前的工作.wmv 装载时动态链接和运行时动态链接应用举例.wmv 20.可执行程序的装载 sys_execve的内部处理过程.wmv 使用GDB跟踪sys_execve内核函数的处理过程.wmv 可执行程序的装载.txt 可执行程序的装载与庄生梦蝶的故事.wmv 可执行程序的装载相关关键问题分析.wmv 浅析动态链接的可执行程序的装载.wmv 21.进程切换的关键代码switch_to分析 进程上下文切换相关代码分析.wmv 进程的调度时机与进程的切换.txt 进程调度与进程调度的时机分析.wmv 22.Linux系统的一般执行过程 linux系统执行过程中的几个特殊情况.wmv Linux系统的一般执行过程.txt linux系统的一般执行过程分析.wmv 内核与舞女.wmv 23.linux系统架构和执行过程概览 LinuxArchitectureAndSystemExecution.pdf linux操作系统架构概览.wmv 从CPU和内存的角度看linux系统的执行.wmv 最简单也是最复杂的操作--执行ls命令.wmv
课程购买
课程价格
金币29
290金币限时优惠会员免费
销量:0
💎 开通会员每日免费下载,比单买更划算 →
支付成功后会自动显示下载资源云盘的链接!点击链接即可下载到本地。