通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>服 务 器>>Linux服务器>>正文 新版上线![旧版]
注:打开慢时请稍等

在linux操作系统中如何截获系统调用

http://www.iyit.net  日期:2006-6-2 11:46:21  来源:转载   点击:
参加讨论】在linux操作系统中如何截获系统调用 :

  使用Linux Kernel Module的一般目的就是扩展系统的功能,或者给某些特殊的设备提供驱动等等。其实利用Linux内核模块我们还可以做一些比较“黑客”的事情,例如用来拦截系统调用,然后自己处理。嘿嘿,有意思的说。

  下面给出一个简单的例子,说明了其基本的工作过程。

#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/unistd.h>
#include <sys/syscall.h>
#include <linux/types.h>
#include <linux/dirent.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/malloc.h>
extern void* sys_call_table[]; /*sys_call_table is exported, so we can access it*/
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*/
}

  大家看到前面的代码了,非常简单,我们就是替换了内核的系统调用数组中我们关心的指针的值,系统调用在内核中实际就是一个数组列表指针对应的函数列表。我们通过替换我们想“黑”的函数的指针,就可以达到我们特定的目的。这个例子中我们替换了“mkdir”这个函数。这样,用户的应用程序如果调用mkdir后,当内核响应的时候,实际上是调用我们“黑”了的函数,而我们实现的函数里面是什么都没有干,所以这里会导致用户运行“mkdir”得不到结果。这个例子很简单,但是我们可以看出,如果我们想截获一个系统调用,那么我们只需要做以下的事情:

  1.查找出感兴趣的系统调用在系统内核数组中的入口位置。可以参看include/sys/ syscall.h文件。
  2.将内核中原来的调用函数对应的指针sys_call_table[X]保留下来。
  3.将我们新的伪造的系统函数指针给sys_call_table[X]。



编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:Linux程序应用开发环境和工具经验谈
下一篇:Linux内核源代码的阅读及相关工具介绍
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
Linux操作系统12则经典应用技巧 Windows和Linux的“鹊桥会” 给Linux新手
在Linux下访问MSSQLServer数据库 Linux环境下发现并阻止系统攻击 (1) Linux环境下发现并阻止系统攻击 (2)
Linux环境下发现并阻止系统攻击 (3) Linux环境下发现并阻止系统攻击 (4) LINUX下MYSQL完全安装使用指南
Linux的防火墙配置! 浅谈Linux优化及安全配置的个人体会 Linux防火墙配置基础篇
解读Linux文件权限的设置方法 设定Linux Web 服务器(1) 设定Linux Web 服务器(2)
设定Linux Web 服务器(3) 设定Linux Web 服务器(4) 设定Linux Web 服务器(5)
设定Linux Web 服务器(6) 在Linux下设置WWW Server(1) 在Linux下设置WWW Server(2)
在Linux下设置WWW Server(4) Linux服务器日志管理详解(1) Linux服务器日志管理详解(2)
最新更新 热点排行 推荐新闻
Linux操作系统12则经典应用技巧
Windows和Linux的“鹊桥会”
给Linux新手
在Linux下访问MSSQLServer数据库
Linux环境下发现并阻止系统攻击 (1)
Linux操作系统12则经典应用技巧
Windows和Linux的“鹊桥会”
给Linux新手
在Linux下访问MSSQLServer数据库
Linux环境下发现并阻止系统攻击 (1)
Linux环境下发现并阻止系统攻击 (2)
Linux环境下发现并阻止系统攻击 (3)
Linux环境下发现并阻止系统攻击 (4)
LINUX下MYSQL完全安装使用指南
Linux的防火墙配置!
Windows2000下安装Apache PHP4 MySQL 
IIS的使用                          
WIN2000 + PHP + MYSQL + TOMCAT + JS
Linux阅读材料 下篇
一个安全Web服务器的安装(二)
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
QQ最新版下载 2006 beta2 体验新感受 
优秀公益广告作品欣赏(7)
Office2007简体中文版浮出水面 美图抢
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(6)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
解决局域网不能互相访问之全攻略
WIN 2000简单的入侵常识
用Win 2003架设邮件服务器
硬盘分区消失,解决方法!
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
AMD水货盒装CPU识别方法
IP地址资源2012年枯竭 部署IPv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
Dreamweaver MX 2004从零开始(1)
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息