从/ dev / kmem读取init_stack task_struct

时间:2019-04-06 18:47:06

标签: linux-kernel

我根植于x86 64位Linux内核。

我的目标是了解task_struct的结构。

我已经查看了/ proc / kallsyms中的init_task地址

我发现:0xffffffff83613740

我想用此C代码从/ dev / kmem中读取此task_struct条目。 (此代码以root用户身份运行):

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE* fd = fopen("/dev/kmem","r");
    fseek(fd,SEEK_SET, 0xffffffff83613740);
    unsigned char buffer[1];
    fread(buffer,1,1,fd);
    fclose(fd);
    return 0;
}

如您所见,我只读取一个字节,而不读取整个task_struct对象。 以root身份运行此代码时出现段错误。

你能告诉我怎么了吗?

/ proc / kallsyms init_task不能给我们提供init的task_struct的内核地址吗? 如果可以,我如何获得地址?

谢谢

0 个答案:

没有答案