Skip to main content

Command Palette

Search for a command to run...

#linux-kernel

Articles tagged with #linux-kernel

  1. 记一次基于 Linux 5.15.0-139 内核源码中ebpf辅助函数解惑学习

    在 eBPF 开发中,辅助函数(Helper Functions)是连接沙箱代码与内核原生的唯一桥梁, 辅助函数既不是动态加载的插件,也不是脆弱的符号引用。它们是在内核启动那一刻,由引导代码根据链接脚本的‘施工图’,强行焊接在内存只读区域的物理基石。 本文起源于我在开发ebpf程序时思考辅助函数到底是什么?它和内核提供的其他函数有什么区别? 。 本文记录了我是如何通过源码分析、逆向思考和底层调试,一步步打通 eBPF 辅助函数逻辑的全过程。所有的代码均出自于5.15.0-139内核源码 第一...

    Feb 6, 20265 min read9
  2. 记一次基于页表级联监控(pts/ptm)的 Ept 内存内省实践

    0.前期准备 我们知道在x86架构下的linux操作系统中,地址变化一直是一个头痛(?)的问题,虚拟地址到物理地址的映射离不开段页式管理,而在早期的内核版本中分段式管理占据主要地位,分页式管理作为可选机制(CR0.PG = 1)。而在现代版本中,段式管理极度弱化,只剩下页式管理。 在虚拟化的环境下,外部如何实现对一块内存进行监控会遇到三个问题: 1.EPT修改权限只能按照gpa修改,然而我们面对的是gva/gla(由于分段式弱化,这俩个可以看成是一个东西),比如说某个对象的某个字段/某个模块的某...

    Jan 10, 20264 min read18
  3. 记一次从物理内存中获取内核符号表

    0.准备工作 为了从物理内存二进制视图中准确的重构出内核符号表,我们需要获取 1.msr寄存器中syscall入口地址,记为S 2.内核代码段第一页签名,记为T 通过启发式扫描、特征匹配和复杂的数据结构解析,重构出 Linux 内核的完整内存拓扑。 msr中syscall入口地址 从vmcs数据结构中读取IA32_LSTAR_MSR(0XC0000082)存储有syscall入口地址 内核代码段第一页签名 使用gdb反汇编vmlinux内核调试包获取第一页签名。具体操作十分简单不过多赘述。 1....

    Jan 7, 20266 min read36
    记一次从物理内存中获取内核符号表