自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(65)
  • 资源 (37)
  • 收藏
  • 关注

转载 Linux Kernel 2.6进程调度的分析(揭示了几乎所有2.6调度的东西)

第一章 Kernel 2.4存在的不足根据对2.4进程调度的分析,我们总结出看出2.4内核总的特点就是:         内核调度简单有效         内核不可抢占但是经过对2.4内核的分析,我们也明显看到了它的缺点:1.调度算法复杂度是O(n),与系统负荷关系较大。而且调度算法在设计上也有缺陷,比如:(1) 2.4进程调度只设置了一个进程就绪队列,这样有的进程

2009-12-24 16:50:00 1999

转载 软中断

软中断一般是指由指令int引起的“伪”中断动作——给CPU制造一个中断的假象;而硬中断则是实实在在由8259的连线触发的中断。因此,严格的讲,int与IRQ毫无关系,但二者均与中断向量有关系。int引起的中断,CPU是从指令中取得中断向量号;而IRQ引起的中断,CPU必须从数据线上取回中断号(硬件引发中断首先加到8259的某个IRQ引脚上,8259根据定义好的规则换算出相应的中断向量号,将其放在数

2009-12-30 20:51:00 3670 3

转载 转:Before main() 分析(gdb的使用)

main()的堆栈内容演示。===========================================================预备知识:1. 常用命令(gdb) b * 0x80483d8         # 在地址处设置断点(gdb) b main                     # 在标号处设置断点(gdb) disass 0x80483d8    # 反汇编(gd

2009-12-28 20:40:00 672

转载 获取Linux 2.6.x sys_call_table

在linux中所有的syscall都是调用int 0x80, int 0x80的中断服务程序为system_call(arch/x86/kernel/traps_32.c:set_system_gate(SYSCALL_VECTOR,&system_call).  system_call (arch/x86/entry_32.S)最终call *sys_call_table(,%eax,4)来

2009-12-26 17:01:00 427

转载 实现Linux系统调用劫持

关于系统调用劫持如果一个木马要隐藏起来,不被系统管理员发现。截获系统调用似乎是必须的。大部分情况下,通过修改系统调用表来实现系统调用的劫持。下面是一个典型的截获系统调用的模块:模块一:#include #include #include #include #include #include #include #include #include MODULE_LICENSE("GPL");exter

2009-12-26 16:57:00 1100 3

转载 Linux2.6内核中劫持系统调用隐藏进程

网上很多类似的文章,其中很多示例程序都是在比较老的内核版本上测试过,很多在新的内核下根本无法运行,我收集了一些相关的资料,并给出一个在linux内核2.6.28(ubuntu9.04)上可以运行的程序代码.相比其他一些文章,修改如下:1.增加了两个函数,清CR0的第20位,不然在替换sys_call_table的时候会报段错误.unsigned int clear_and_return_cr0(v

2009-12-26 16:56:00 451

转载 2.6内核系统调用劫持段错误segment fault等问题的解决方法

在网上搜了很多关于2.6内核系统调用劫持的文章,流传的最多的可能就是那个以mkdir系统调用为例子的文章,自己按照源码敲进去,写好Makefile后也编译通过了,但是加载时却出现了Segment fault的错误,后来调试了一下,发现sys_call_table找得不对,后面却用了返回的一个非法地址,结果出现访问错误。看来这个segment fault是由于非法访问内存引起的,添加了返回值判断后,

2009-12-26 16:55:00 513

转载 (转)在Linux2.6内核下实现进程隐藏

很早以前的小程序,比较简单但是觉得有趣原理很简单,Linux查看进程的命令ps是通过系统调用sys_getdents实现,sys_getdents用户获取一个指定路径下的目录条目,实际上就是枚举/proc/ 下的pid,这样我们只需要hook一下sys_getdents,把相应的要隐藏的pid信息去掉即可。以下是LKM代码,在Linux-2.6.14测试并运行成功  #include

2009-12-26 16:28:00 398

转载 sys_call_table undefined 及 如何替换系统调用

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://chenm.blogbus.com/logs/52077181.html2.4的内核中可以通过修改sys_call_table来很轻松的替换系统调用,来完成很多trick,很多的rootkit就是基于这种手法来完成的。到了2.6的内核,事情就不是这么回事了,sys_call_table不再被export出来了,这样的

2009-12-26 12:01:00 1047

转载 函数ERR_PTR,PTR_ERR还有IS_ERR理解

ERR_PTR()和PTR_ERR()都是很简单的类型转换,没有什么可说的。 IS_ERR()有一些妙处。 内核中的函数常常返回指针,问题是如果出错,也希望能够通过返回的指针体现出来。 所幸的是,内核返回的指针一般是指向页面的边界(4K边界),即ptr & 0xfff == 0这样ptr的值不可能落在(0xfffff000,0xffffffff)之间, 而一般内核的出错代码也是一个小负数,

2009-12-26 10:23:00 541

转载 如何在linux/unix中设置线程的优先级

如何在linux/unix中设置线程的优先级int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);来创建线程,但是如何设置线程的优先级呢?在讨论这个问题的时候,我们先要确定当前线程使用的调度策略,posix提供了i

2009-12-25 16:57:00 312

转载 操作系统多级页表计算问题

 某计算机有64位虚地址空间,页大小是2048B.每个页表项长为4B。因为所有页表都必须包含在一页中,故使用多级页表,问一共需要多少级? 最佳答案2048B=2^11 64-11=53(地址中扣除页内地址位数) 共有2^53页一页中可以装2048/4=2^9个页表项9*6>53 至少需要6级页表

2009-12-24 18:27:00 3980 3

转载 need_sched 一些讨论

我想写一个简单的设备驱动, 但对驱动模块的可重入方面不甚了解.有的书说驱动模块不会被中断, 除非主动地调用schedule()(或是隐式地调用, 如vmalloc()); 有的书则说即使schedule()被调用, 它也不会去作进程切换, 因为schedule()不对内核态进程切换.不知谁对? 望高人指点一二. 谢谢

2009-12-24 12:48:00 391

转载 (转)need_resched 是怎么使用的(ZT)

终于在《情景》&think hard地情况下,想明白了! 一 系统调用do_fork() 1 当前进程调用fork()创建子进程,进入kernel 2 当前进程分一半多时间片给子进程, 3 如果当前进程时间片剩余为0,设定当前进程need_sched=1, 4 从系统调用退出 5 到达ret_from_sys_call 6 到达ret_with_reschedule

2009-12-24 12:24:00 1116 1

转载 (转)ELF文件格式 程序加载 执行 图示 OBJDUMP

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2009-12-24 10:57:00 589

转载 linux下的16进制查看工具

od,在其他UNIX系统上也比较常见; hexdump/hd,是用来替代od的,可以自定义输出格式; 在vi的命令状态下:%!xxd ——将当前文本转换为16进制格式。:%!xxd -r ——将当前文件转换回文本格式。

2009-12-24 09:54:00 841

转载 echo 1 > /proc/sys/net/ipv4/ip_forward

如果内核支持ip转发 这个命令就相当激活了ip转发功能 类似路由。就上让内核做路由。

2009-12-23 21:50:00 1894

转载 2.4.18和2.6.25.4-rt在任务调度上的不同

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=693202&page=&view=&sb=&o=&vc=12.4.18和2.6.25.4-rt在任务调度上的不同检查点:A) 返回用户空间/返回内核空间:----2.4 :只在返回user space的时候才会检查任务是否

2009-12-23 17:53:00 349

转载 linux 进程调度

v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅

2009-12-23 15:32:00 419

转载 Linux进程管理之CFS调度器分析

------------------------------------------ 本文系本站原创,欢迎转载! 转载请注明出处:http://ericxiao.cublog.cn/ ------------------------------------------ 一:前言 CFS调度在2.6.23版本的kernel中被加入.引用Ingo Molnar的一句话:80%的设计

2009-12-23 15:29:00 991

转载 Linux 实时技术与典型实现分析

http://www.ibm.com/developerworks/cn/linux/l-lrt/part1/http://www.ibm.com/developerworks/cn/linux/l-lrt/part2/

2009-12-22 20:11:00 234

转载 ELF 文件数据分析: 全局变量(objdump 如何查找一个变量,并把它变成可阅读的)

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2009-12-22 14:16:00 2269

转载 crontab 的格式备忘

经常用,但是经常忘记,基本的格式能记得,但是详细的或者复杂点的格式总会忘记或者拿不准,不知道是不是年纪大了记忆力下降,干脆整理出来今后方便查看。基本格式 :*  *  *  *  *  command分 时 日 月 周 命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星

2009-12-22 11:12:00 686

转载 objdump

每个“可加载的”或“可分配的”输出section通常包含两个地址: VMA(virtual memory address虚拟内存地址或程序地址空间地址)和LMA(load memory address加载内存地址或进程地址空间地址). 通常VMA和LMA是相同的. 在目标文件中, loadable或allocatable的输出section有两种地址: VMA(virtual Memory Add

2009-12-21 21:18:00 407

转载 浅析get_fs()和set_fs()设置user用户空间所能访问的最大虚拟地址

static inline mm_segment_t snd_enter_user(void){在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)// get_fs()和set_fs()位于include/asm-generic/uaccess.h    mm_segment_t fs = get_fs(); // 获取

2009-12-21 18:25:00 480

转载 在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)(调用系统调用,可以访问用户空间)

#include #include #include #include #include #include #include #include #include #define MY_FILE "LogFile"//#define MY_FILE "/root/LogFile"asmlinkage long sys_open(const ch

2009-12-21 18:10:00 1619

转载 内核模块编程能否使用系统调用?如何使用?(未验证)

我给你一段代码,我用过的     static   inline   _syscall3(int,read,int,fd,char   *,buf,off_t,count)     static   inline   _syscall3(off_t,lseek,int,fd,off_t,offset,int,count)     void     hehe(void   *m,

2009-12-21 17:22:00 350

原创 如何实现当在vim中输入到80个字符时自动断行(vimrc模板)

在 ~/.vimrc 中加入以下几行:set columns=80set tw=80set fo+=Mm附,我的~/.vimrc文件:$ cp /usr/share/vim/vim64/vimrc_example.vim ~加上这几行:set nuset nobackupset shiftwidth=4set tabstop=4set columns=87set tw=80set fo+=Mmse

2009-12-20 18:57:00 585

转载 在 kernel中如何定时, 变量 HZ 和 jiffies

HZ      定义了时钟中断的频率,即每秒钟时钟中断的次数jiffies  记录了自启动后,时钟中断发生的次数例如:unsigned long timeout = jiffies + (3*HZ) ;     while (hwgroup->busy) {     /* ... */     if (time_after(jiffies, timeout) ) {     retur

2009-12-20 18:31:00 429

转载 linux 2.6.23时钟中断与调度分析(4)

TIMER_INITIALIZER():1):TIMER_INITIALIZER()用来声明一个定时器,它的定义如下:#define TIMER_INITIALIZER(_function, _expires, _data) {         /                .function = (_function),                        /          

2009-12-20 14:41:00 1216 1

转载 内核定时器的使用(好几个例子add_timer)

LINUX内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1) 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2) 不

2009-12-20 14:26:00 3822

转载 复杂一点的add_timer

总的来说,timer的用法还是很简单的。主要需要定义一个timer_list变量timer、先初始化timer   init_timer(&timer);   then 对timer的相关参数赋值:   timer.function = fun;   timer.expires = jiffies + TIMER_DELAY;   add_timer(&timer);   在定时器时间到的时候,会

2009-12-20 14:22:00 2908

转载 fcntl函数(作用就是改变文件描述符的属性struct file)

该函数可以改变已打开的文件的性质。     #include fcntl.h>     int fcntl(int fields, int cmd, /**//* int arg */); //若成功则依赖于cmd,若出错则返回-1       第三个参数总是一个整数,与上面所示函数原型中的注释部分相对应。但是在作为记录锁用时,第三个参数则是指向一个结构的指针。   fcntl函数有5种功

2009-12-20 09:52:00 868

转载 (转载) 使用 Linux 系统调用的内核命令, 探究 SCI(systen call interface) 并添加自己的调用.

URL;http://www.ibm.com/developerworks/cn/linux/l-system-calls/index.html使用 Linux 系统调用的内核命令探究 SCI 并添加自己的调用    文档选项   将此页作为电子邮件发送   将此页作为电子邮件发送   级别: 中级M. Tim Jones (mtj@mtjones.com), 顾问工程师, Emule

2009-12-19 21:07:00 488

转载 fasync(在内核发生某个事情时向应用发信号, 应用需要把那个设备用fcntl改一下。)

fasync的解释 fasync(fd,file,on)  当我们呼叫fcntl()系统呼叫,并使用F_SETFL命令来设定档案的参数时,VFS就会呼叫fasync()这个函式,而当读写档案的动作完成时,行程会收到SIGIO的讯息。==========================================================================

2009-12-19 18:20:00 2076 1

转载 简单配置samba(share模式可用,user模式未验证)

第一种,share级别,共享/home/usr/sharevi /etc/smb.conf[global]段中改security = share后,加一个共享段[share]path=/home/user/sharepublic=yesbrowseable=yesnetconf 设置主机名hostname 设置主机名service smb restart即可。 notes:配置成/home

2009-12-19 10:21:00 2003

转载 2.6内核Makefile简单语法与应用

1.1 概述2.6的Makefile的写法和应用相对于2.4有了一些变化,可能对于很多人来说,因为找不到相关的文档,都是模仿内核中已有的文件来写自己的Makefile。其实,在内核的Documentation /kbuild目录下面,还是有对内核Makefile语法的详细说明的。在这里就2.6内核中Makefile最常见的简单应用情况做一个翻译和归纳介绍。2.6内核

2009-12-17 16:33:00 225

转载 两个编译2.4与2.6内核模块的Makefile 模板(支持交叉编译)

Makefile for linux 2.4 kernelTARGET  := modulenameINCLUDE := -I/opt/celinux-040503/includeCFLAGS  := -O2 -Wall -DMODULE -D__KERNEL__ -DLINUXCC  := arm-926ejs-linux-gc

2009-12-17 14:39:00 464

转载 kernel panic Call Tree 分析方法

> google了一下,感觉网上相关的信息都很少> 很多都是2.4内核的了> panic后屏幕出现的信息包含寄存器和stack的内容还有call trace> call trace中函数名后出现的地址信息代表什么,怎么使用呢?> 谢谢> 例如> [] balloon_process+0x5c/0xba [xen_balloon]

2009-12-17 11:06:00 1849

转载 如何在程序内部获得call back trace(应用程序calltrace)

在Linux的C语言程序中,如何得到目前程序运行的堆栈轨迹,类似于java里面的printStackTrace(),目的是用于调试。   我之前使用过一种笨方法就是设一个全局链表,每次进入一个functino就将名称加入链表,退出在del掉,因为使用宏和Linux的list_head结构,其实效率损失的不是太多(当然仅用于调试时了)。但是这方法实在有点太低级了,羞于见人阿。  

2009-12-17 10:33:00 1288

小巧截图笔

小巧截图笔,超好用,只有13k 强烈推荐

2012-05-04

Linux Performance and Tuning Guidelines + linux内核测试指南

linux 内核相关 top buddyinfo ps等使用

2011-05-21

gdb reference

gdb reference 很好的gdb指令分类,简洁

2011-03-26

add protocl network stack 添加一个新的协议族

添加一个新的协议族 good up

2010-01-20

内核阅读心得(pdf)

内核阅读心得 pdf 值得一看 推荐

2010-01-19

Linux 内存管理导读 .pdf

Linux 内存管理导读 .pdf 内核级分析

2010-01-17

ELF+文件格式分析

ELF+文件格式分析 深入C语言 good

2010-01-14

高级Bash脚本编程指南

高级Bash脚本编程指南 bash 好书

2010-01-09

系统分析pdf+kernel module programming guide

系统分析pdf+kernel module programming guide

2009-12-27

深入分析Linux内核源码

深入分析Linux内核源码 经典书,看代码很有帮助

2009-12-26

the design of unix system

the design of unix system Unix操作系统设计.pdf

2009-12-20

Advanced Bash-Scripting Guide 3.9.1 (中译本)

Advanced Bash-Scripting Guide 3.9.1 (中译本)

2009-12-04

边学边干加强版(不错)

就是pdf的边学边干,之前的没有目录和源码。

2009-12-04

边学边干(pdf版)

边学边干(pdf版)pdg的看着太麻烦,我把它转了一下。

2009-11-26

边学边干书+源码(李善平)

边学边干书+源码 李善平 不多说,好书

2009-11-25

Linux操作系统分析与实践

Linux操作系统分析与实践 北大课件(关于网卡驱动和tasklet这部分可以看看)

2009-11-07

浙大关于linux内核的实验

浙大关于linux内核的实验, 非常值得学习,但是要有一定基础。

2009-10-23

一个台湾人写的ppt,关于proc部分的解释挺清楚的

一个台湾人写的ppt,关于proc部分的解释挺清楚的

2009-10-21

内核模块编程与调试介绍

内核模块编程与调试 主要是调试部分,可以借鉴 大家看看

2009-10-21

Linux 源码分析 系列

Linux 源码分析 系列 分析得很透彻,建议有基础的人看看。

2009-10-11

LINUX内核指导(1).pdf

LINUX内核指导(1).pdf pdf格式,建议大家看看

2009-10-07

HAP_SecureCRT_5.1.3

HAP_SecureCRT_5.1.3 串口 ssh等 好用

2009-10-04

source insight comment 添加代码注释

coding convention source insight comment

2009-08-05

挑战30天C++入门极限

c++ 快速入门 挑战30天C++入门极限

2009-04-25

linux2.6-scaner-driver.rar

linux2.6-scaner-driver.rar 2.6下的扫描仪驱动源码

2009-03-25

linux扫描仪驱动源码

linux 扫描仪驱动源码 linux scanner device driver 大家看看

2009-03-25

信息论基础理论与应用课件

信息论基础理论与应用 课件

2009-03-23

basic linux command

linux基础命令 打好基础才是

2009-03-23

Linux下PCI设备驱动程序开发

Linux PCI设备驱动 开发 网上搜集

2009-03-23

linux 内核架构图

很清晰的对kernel内部调用的函数框架图,不错推荐大家看看

2008-08-21

writing an alsa driver

linux alsa driver相关,介绍的很详细

2008-08-07

编程修养 ^_^

这是书上学不到的,但是每个程序员都应该知道的东西。不仅是知道,应该去养成的习惯。个人观点。

2008-08-07

vim用户手册

linux下编程工具手册,vim比较全面的资料

2008-07-12

linux新手管理员指南

linux新手管理员指南

2008-07-12

The.Art.of.UNIX.programming

英文版,不错,值得看看

2008-07-12

莱昂氏UNIX源代码分析

莱昂氏UNIX源代码分析

2008-07-12

Intel 64 and IA-32 Architectures ,Software Developer's Manual

intel 最新软件手册,图解很详细。比中文版80386的书好理解点。英语句子都是很基本的。好懂!!

2007-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除