自定义内核模块读取进程的线性地址

打印指定进程的线性地址段

利用procfs查看进程的线性地址

自定义内核模块读取进程的线性地址

c 复制代码
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/netdevice.h>

static int hello_init(void) {
        struct task_struct *p;
        struct vm_area_struct *vma;
        printk(KERN_ALERT "init fishing\n");
        for_each_process(p) {
                if (strcmp(p->comm,"a.out") == 0) {
                        printk(KERN_ALERT "%s-->%p\n",p->comm, p->mm);
                        for(vma = p->mm->mmap;vma!=NULL;vma = vma->vm_next) {
                                printk(KERN_ALERT "%lx - %lx\n",vma->vm_start, vma->vm_end);
                        }
                }
        }
        return 0;
}

static void hello_exit(void) {
        printk(KERN_ALERT "exit fishing\n");
}
subsys_initcall(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("shakespeare");
复制代码
ifneq ($(KERNELRELEASE),)
$(info "2nd")

obj-m := fishing.o

else
#kdir := /lib/modules/$(shell uname -r)/build
kdir := /usr/src/linux-headers-$(shell uname -r)
pwd := $(shell pwd)

all:
        $(info "1st")
        make -C $(kdir) M=$(pwd) modules

clean:
        rm *.ko *.o *.order *.mod.c *.symvers *.mod
endif

编译并加载内核模块

使用dmesg打印日志

通过对比可知,打印的线性地址与系统提供的procfs中的maps一致。

相关推荐
mounter62517 小时前
统一安全域:KVM Planes 如何驾驭硬件特权级
linux·安全·linux kernel·kernel
mounter6251 天前
Linux 7.2 引入更灵活的块设备错误注入机制
linux·linux kernel·kernel·disk·error injection
mounter6256 天前
从内核安全到可编程基础设施:Meta 的 eBPF 实践与形式化验证探索
linux·ebpf·linux kernel·kernel
mounter6257 天前
Linux 内核 binfmt_misc 深度全景解析:历史、架构、安全
linux·安全·linux kernel·kernel
mounter62511 天前
eBPF 驱动的云原生网络变革:Cilium 的前世今生与全机套接字迭代技术演进
linux·ebpf·linux kernel·kernel
mounter62512 天前
从 2026 LSFMM/BPF 峰会看 eBPF 生态演进:技术变革、工具全景与资源泄漏诊断实战
linux·linux kernel·kernel
mounter62513 天前
突破零停机演进:Linux 内核 Live Update Orchestrator (LUO) 架构设计与热升级演进
linux·服务器·linux kernel·kernel·kho·luo
mounter62518 天前
重构 Kexec Handover:Linux 内核如何将 KHO 打造为无状态、可重入的跨重启交接基石
linux·内存管理·linux kernel·kernel·liveupdate
mounter62523 天前
将 RDMA 引入容器:Soft-RoCE (RXE) 网络命名空间支持深度解析
linux·linux kernel·kernel·rdma·net namespace
mounter62523 天前
GCCRS 突破与 Rust 入核:Linux 工具链的重大变革
linux·开发语言·rust·linux kernel·kernel