我根植于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的内核地址吗? 如果可以,我如何获得地址?
谢谢