Linux用户空间获取系统调用表地址Linux认证考试
文章作者 100test 发表时间 2009:12:08 20:47:36
来源 100Test.Com百考试题网
一、代码及实现
(一)用户空间源代码
#include <.stdio.h>.
#include <.stdlib.h>.
#include <.string.h>.
#include <.sys/types.h>.
#include <.sys/stat.h>.
#include <.fcntl.h>.
#include <.unistd.h>.
#include <.errno.h>.
#include <.sys/mman.h>.
#define CALLOFF 100 //读取100字节
struct {
unsigned short limit.
unsigned int base.
} __attribute__ ((packed)) idtr. //这个结构表示IDTR寄存器,这个寄存器中保存中断描述符表 的地址
struct {
unsigned short off1.
unsigned short sel.
unsigned char none,flags.
unsigned short off2.
} __attribute__ ((packed)) idt. //中断描述符表中的内容:中断门描述符
unsigned int old_readkmem (int fd, void * buf,size_t off,unsigned int size) //用read方式读取kmem中一定长度内容
{
if (lseek64(fd, (unsigned long long)off,SEEK_SET)!=off)
{
perror("fd lseek error").
return 0.
}
if (read(fd, buf,size)!=size)
{
perror("fd read error").
return 0.
}
}