在2.6.32实现拦截系统调用
1.获取sys_call_table的地址
方法1:从/boot/System.map中取到sys_call_table的地址
由上图所看:第一:sys_call_table是只读的,下面是如何使得它变为RW。
第二:这种方法获取的sys_call_table只是针对本机的,可移植性差
方法2:参考来源于:http://bbs.chinaunix.net/thread-1946913-1-1.html
通过中断向量表,找到系统调用的中断向量,再通过系统调用时执行的指令,最终找到系统调用表的地址。详情请阅读原文。
2. 设置sys_call_table可写
在Intel x86 CPU里,CR0寄存器的WP位是控制内存页面只读的,如果将该位清0,则可以对内存页面进行写操作。更深入的理解: