欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

linux内核绑票 系统调用sys_write出现死机现象 请高手分析原因

更新时间: 2014-01-05 03:19:30 责任编辑: Author_N1

 

linux内核劫持 系统调用sys_write出现死机现象 请高手分析原因
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/unistd.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/syscalls.h>
#include <linux/dirent.h>
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/string.h>
#include <linux/list.h>
#include <linux/kallsyms.h>
#include <asm/uaccess.h>
#include <linux/slab.h>
MODULE_LICENSE("Dual BSD/GPL");
#define _DEBUG
#ifdef _DEBUG
#define kprintk(fmt,args...) printk(KERN_EMERG fmt,##args)
#define kprintf(fmt,args...) printf(fmt,##args)
#define kperror(str) perror(str)
#else
#define kprintk
#define kprintf
#define kperror
#endif


long * g_sys_call_table=NULL;
long g_oldcr0=0;
asmlinkage long (*g_old_sys_write)(unsigned int fd, const char __user *buf, size_t count)=NULL;


struct _idtr{
    unsigned short  limit;
    unsigned int    base;
} __attribute__ ( ( packed ) );

struct _idt_descriptor
{
    unsigned short offset_low;
    unsigned short sel;
    unsigned char  none, flags;
    unsigned short offset_high;
} __attribute__((packed));

unsigned int close_cr(void)
{
    unsigned int cr0 = 0;
    unsigned int ret;

    asm volatile ("movl %%cr0, %%eax"
            : "=a"(cr0)
            );
    ret = cr0;

    /*clear the 20th bit of CR0,*/
    cr0 &= 0xfffeffff;
    asm volatile ("movl %%eax, %%cr0"
            :
            : "a"(cr0)
            );
    return ret;
}

void  open_cr(unsigned int oldval)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:30
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20789/
本文WWW.DOC100.NET DOC100.NET版权所有。