摘要:
Linux系统的系统调用通过设置全局errno来标示错误类型http://blog.chinaunix.net/u2/87570/showart_2137607.html,并通过perror,sperror函数提供对errno的解析。而我们平时写程序的错误处理方式类似于下面的代码:if ( p == NULL ){ printf ( "ERR: The pointer is NULL\n" );}if(socket(PF_INET, SOCK_STREAM, 0) < 0) {printf(“create socket errr\n”);}这种方式虽然没什么问题,但其 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(197)
评论(0)
推荐(0)
摘要:
如果在编写内核源代码时给内核留下后门,则你可以很容易的利用,则可轻易的使用模块实现一些扩展功能(实现一些跟内核相关的应用或是出于攻击性目的的扩展)。例如:在read系统调用的实现中,你留下了后门:在read_write.c中,定义了函数指针void (backdoor*)(size_t *count) = NULL;并使用EXPORT_SYMBOL带出符号backdoor。在sys_read中加入如下代码:if(backdoor != NULL) backdoor(&count); //这里的count为sys_read的最后一个参数在内核模块中,你可以实现自己的后门函数,并将back 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(231)
评论(0)
推荐(0)
摘要:
当克隆或者重装虚拟机后,再启动系统(Fedora 11)时会发现系统下不再有eth0,而变成了eth1,当使用/etc/init.d/network重启网络时,会提示找不到设备eth0及eth1的启动脚本。做以下改动:/etc/sysconfig/network-scripts/ifcfg-eth0重命名为/etc/sysconfig/network-scripts/ifcfg-eth1/etc/init.d/network restart 提示找不到eth0 发现脚本中的device一项没有改过来,将其改为eth1(或者删掉)/etc/init.d/network restart 提示网.. 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(319)
评论(0)
推荐(0)
摘要:
上个月给文件系统添加额外的属性设置接口,但却是完全脱离文件系统实现的,直接使用rpc连接元数据服务器来设置/获取属性,而没有通过文件系统的客户端。当时想着还有一种方法就是在fuse-2.8中支持了ioctl接口,可通过为分布式文件系统实现ioctl接口实现扩展属性的获取与设置。 使用ioctl首先要理解ioctl命令的封装格式,ioctl的命令对应一个32bits的整数,其格式如下: ... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(1372)
评论(0)
推荐(0)
摘要:
零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。如下例所示: #include <stdlib.h>#include <stdio.h>struct device{int num;int count; int reserve[0]; /* * reserve是一个数组名;该数组没有元素;该数组的其实地址紧随结... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(225)
评论(0)
推荐(0)
摘要:
1. 内核符号表 内核符号表是linux内核提供给内核代码的一部分引用,所指的“内核代码”包括内核以及驱动程序等运行在内核内存空间的程序,“引用”包括对变量的引用,对函数的引用等。最常见的内核符号引用如printk打印输出,通常内核符号是由一部分内核代码提供给其他内核代码访问其内部数据的接口。 外部模块只能使用内核或其他外部模块导出的符号。内核或外部模块可通过EXPORT_SYMBOL宏导出符... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(1316)
评论(0)
推荐(0)
摘要:
方法1:修改系统调用表(适用于linux-2.4内核) 内核使用sys_call_table数组来存储系统调用表,将系统调用号与系统调用处理函数对应起来,通过修改sys_call_table数组的某一个元素,即可实现截获系统调用的功能,在2.4内核中,sys_call_table符号是被导出的,外部模块可以使用,故能简单的实现截获系统调用,在加载模块时,修改sys_call_table的处理函数... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(552)
评论(0)
推荐(0)
摘要:
在不同的操作系统中,换行符的存储方式不同,如linux系统以\n表示,而Mac OS以\r表示,windows系统则以\r\n表示,而C语言中,换行则以\n表示,故在不同的操作系统下用C语言读取文本文件时,需要做相应的处理,本文主要介绍windows系统下的处理。 1. 检查文件是否以文本模式打开,如果不是则不需要做特殊处理; 2. 循环依次读取文件中的字符,按以下规则对字符进行处理,直到读... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(2126)
评论(0)
推荐(0)
摘要:
asmlinkage long sys_mount(char __user *
dev_name, char __user * dir_name, char __user * type, unsigned long flags, void
__user * data); 参数说明: 1. 文件系统所在的设备文件的路径名,或者如果不需要则为NULL(如网络文件系统); 2. 文件系统被安... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(469)
评论(0)
推荐(0)
摘要:
Iometer简介
Iometer 是一个工作在单系统和集群系统上用来衡量和描述I/O子系统的工具。 Iometer 既是工作负载生成器(也就是说,它可以进行输入输出操作,以便增加系统的负荷),它还是一个测量工具(也就是说,它检查并且记录I/O 操作的性能和对系统的影响)。它可以被配置为模拟任何程序或者基准测试程序的磁盘和网络I/O的负载,或者用来产生整个综合的I/O负载。它也可以用来产生并测... 阅读全文
posted @ 2013-04-19 14:07
ydzhang
阅读(948)
评论(0)
推荐(0)
浙公网安备 33010602011771号