fork函数在用户态的追踪
来源:互联网 发布:unity3d中xml编写 编辑:程序博客网 时间:2024/06/01 09:08
1.环境配置:
a.在终端输入ddd命令,打开ddd调试工具。然后打开上文的test_fork可执行文件。
注意 编译test_fork.c文件中,-g是将代码加入进去,便于ddd分析
b.如下图所示,右键函数开始执行处,加上断点。
c.在ddd中点击run命令,执行该程序。这样程序就会执行执行到断点处,下面开始分析程序。
2.首先查看现在寄存器的值。因为系统调用号是通过eax传递过去的,所以要监控eax寄存器的变化。
3.在fork+147处,eax寄存器发生改变。当执行到上图箭头所指命令时eax数值变为了0x78=120 ,通过查看系统调用表,发现对应的系统调用为sys_clone。
上图在箭头处进入了一个函数,执行stepi进入该函数
4.由下图可知进入了kernel_vsyscall的函数,继续跟踪这个函数,sysenter这个命令使函数由用户态进入到内核态。eax的寄存器的值为0x78
执行完sysenter后,fork函数执行执行到+16处,跳过了int 0x80中断。说明是通过sysenter快速系统调用进入得到的内核。
上述只是在用户态调试,并没有办法进入内核态去跟踪系统调用。要想继续跟踪,需要进入已经搭建好的环境进一步调试内核。
5.函数触发系统调用是通过调用libc里的封装例程syscall , 借助这个封装例程向内核发送系统调用号。终端中输入man syscall 来查看这个函数的功能。
文档下载地址:很全:http://download.csdn.net/detail/u014734779/7417169
0 0
- fork函数在用户态的追踪
- fork函数在内核态的追踪
- 在用户空间下解析fork()函数
- FUSE用户态文件系统中自己实现的highlevel接口函数从注册到调用完全追踪
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- wait函数在fork创建子进程后的使用
- fork函数的剖析
- FORK()函数的理解
- FORK()函数的理解
- FORK()函数的理解
- FORK()函数的理解
- fork()函数的理解
- FORK()函数的理解
- fork函数的用法
- C&C++混合编程
- 【6】连续序列和为s
- matlab求图像的局部峰值点集
- Effective C++ Item 12 复制对象时勿忘其每一个成分
- Solr Suggest实现搜索智能提示
- fork函数在用户态的追踪
- C++ 指定路径文件夹存在与否查询及文件夹创建
- 最完整MATLAB工具箱下载连接
- 我的算法学习之路
- [JAVA]简单的鼠标拖动小球
- Linux下只允许root登录禁止其他用户登录
- 贪吃蛇(javascript版)
- 隐马尔科夫模型HMM自学
- git和github的区别