当前位置: 技术问答>linux和unix
求助!!! linux中读取系统调用表死机
来源: 互联网 发布时间:2016-07-23
本文导语: 在64位linux上,先得到系统调用函数地址,然后搜索"xffx14xc5"的方式得到系统调用表。然后只要读取调用表中的内容linux就会死机,我也设置了 CR0的WP标志位, 真是不知道怎么回事了。请各位帮忙! 获取系统调用表...
在64位linux上,先得到系统调用函数地址,然后搜索"xffx14xc5"的方式得到系统调用表。然后只要读取调用表中的内容linux就会死机,我也设置了 CR0的WP标志位, 真是不知道怎么回事了。请各位帮忙!
获取系统调用表:
static unsigned long get_syscall_table_long(void)
{
#define OFFSET_SYSCALL 200
unsigned long syscall_long, retval;
char sc_asm[OFFSET_SYSCALL];
int i;
rdmsrl(MSR_LSTAR, syscall_long);
dbgprint("long mode: system_call is at %pn", (void *)syscall_long);
memcpy(sc_asm, (char *)syscall_long, OFFSET_SYSCALL);
dbgprint("long mode: sc_asm is at %pn", (void *)sc_asm);
//for (i = 0; i
获取系统调用表:
static unsigned long get_syscall_table_long(void)
{
#define OFFSET_SYSCALL 200
unsigned long syscall_long, retval;
char sc_asm[OFFSET_SYSCALL];
int i;
rdmsrl(MSR_LSTAR, syscall_long);
dbgprint("long mode: system_call is at %pn", (void *)syscall_long);
memcpy(sc_asm, (char *)syscall_long, OFFSET_SYSCALL);
dbgprint("long mode: sc_asm is at %pn", (void *)sc_asm);
//for (i = 0; i