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

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

利用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一致。

相关推荐
mounter62516 小时前
迈向硬件级无缝热升级:Linux 内核 VFIO 与 IOMMU 持久化技术的演进之路
linux·服务器·内存管理·kernel
Strugglingler3 天前
Linux Device Drivers-第八章 内存分配
linux·kernel·读书笔记·内存分配
Realdagongzai4 天前
Linux 6.19.10 内核调度器算法详解
linux·学习·算法·spring·kernel
羌俊恩5 天前
Redis 宕机问题一解
java·redis·cgroup·top·kernel·jstack·cpulimit
楼兰公子11 天前
RK3588 + Buildroot + Linux 7.0** 环境的内核调试进阶课题
rk3588·kernel·进阶调试
mounter62518 天前
深度解析 dmabuf/devmem:从图形渲染到 AI 与高性能网络的演进之路
linux·网络·人工智能·内存管理·kernel
mounter62521 天前
比 veth 更强、为 eBPF 而生:深度解析 Linux netkit 虚拟网卡驱动
linux·ebpf·kernel·netkit
mounter6251 个月前
深入理解 Linux 网络新特性:netkit 中的 RX/TX Queue Leasing 与 TCP Devmem
linux·服务器·网络·tcp/ip·kernel
mounter6251 个月前
Linux Kernel Design Patterns (Part 2):从经典链表到现代 XArray,拆解内核复杂数据结构的设计哲学
linux·数据结构·链表·设计模式·内存管理·kernel
mounter6251 个月前
【内核新动向】告别物理槽位束缚:深度解析 Linux Virtual Swap Space 机制
linux·内存管理·kernel·swap·virtual swap