当前位置:  技术问答>linux和unix

LKM问题,动态查找sys_call_table相关

    来源: 互联网  发布时间:2016-05-09

    本文导语:  1. 在编写模块是每次insmod后都无法卸载模块,只能重启,网上说是因为编译内核时没有把卸载模块选项选中,我直接装的linux,没机会选阿,难道我要重新编译一次内核? 2. 我在2.6内核下调一个模块,大致这样:动...

1. 在编写模块是每次insmod后都无法卸载模块,只能重启,网上说是因为编译内核时没有把卸载模块选项选中,我直接装的linux,没机会选阿,难道我要重新编译一次内核?
2. 我在2.6内核下调一个模块,大致这样:动态查找系统调用表,然后替换其中的系统调用,不过每次insmod都是段错误,帮忙看看错在那里。。。

#include 
#include 
#include 
#include 

unsigned long *sys_call_table = NULL;
//typedef int (*funcType)(const char*,int);
//funcType orig_mkdir;
asmlinkage int (*orig_mkdir)(const char*,int mode);

struct idt_tag
{
unsigned short offset_low,segment_select;
unsigned char reserved,flags;
unsigned short offset_high;
};

static unsigned long* getSyscallTable(void)
{
unsigned char idtr[6],*shell,*sort;
struct idt_tag *idt;
unsigned long system_call,sct;
unsigned short offset_low,offset_high;
char *p;
int i;
__asm__("sidt %0":"=m"(idtr));
idt = (struct idt_tag*)((*(unsigned long*)&idtr[2]) + 8 * 0x80);
offset_low = idt->offset_low;
offset_high = idt->offset_high;
system_call = (offset_high)

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编写lkm时的内存分配
  • 100分答谢:谁会Linux下的LKM的编程
  • 用LKM写一个文件系统 挂载到系统中方法
  • 我的lkm程序,insmod时提示内核版本不对,怎样才能成功升级内核?
  • 一个关于LKM的简单问题
  • LKM遇到问题,请问这是为什么?
  • LKM 中一个例子的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3