linux系统函数ptrace介绍-01
来源:互联网 发布:三星高通9008端口救砖 编辑:程序博客网 时间:2024/06/10 05:26
ptrace系统函数。 ptrace提供了一种使父进程得以监视和控制其它进程的方式,它还能够改变子进程中的寄存器和内核映像,因而可以实现断点调试和系统调用的跟踪。使用ptrace,你可以在用户层拦截和修改系统调用(sys call).
学好ptrace,写一个linux下的简单调试器是木有问题的。
Ptrace有四个参数
long ptrace(enum__ptrace_request request, pid_tpid, void *addr, void *data);
第一个参数决定了ptrace的行为与其它参数的使用方法。
下面先介绍如下两个函数
一、PTRACE_TRACEME
告诉自己的父进程来跟踪我吧。
实例:
fork一个子进程,然后告诉父进程来跟踪我吧。父进程Else语句这里写得比较简单,实际上这里可以做很多事,给子进程设置断点、读子进程寄存器数据都是可以的。
二、PTRACE_ATTACH
跟踪某个进程。(备注:如果某一个进程已经被另一个进程ptrace了,那么该进程将不能被另一个进程ptrace。很多反调试基于此点。)
实例:03.c代表将要去跟踪某一个进程。04.c代表要被跟踪的进程
03.c源码:
备注:6065代表被跟踪进程的ID。
04.c源码
备注:被跟踪的进程。
测试:
运行04.c:
此时查看该进程的pid,替换03.c源码中的进程ID。
重新编译,执行03程序,
返回值为0,代表attach成功。之后我们就可以根据ptrace的一些其它函数对04程序进行监控了。
此时如果再开启另一个终端,再次执行03程序,会发现如下结果
返回值为-1,代表attach失败。这就验证了一个程序只能被另一个程序进行监控,这也是现在大多数反调试所采用的技巧。
0 0
- linux系统函数ptrace介绍-01
- Linux系统调用--ptrace函数详解
- Linux系统调用--ptrace函数详解
- Linux系统调用--ptrace函数详解
- linux ptrace函数
- linux ptrace函数
- linux ptrace函数
- [Ptrace]Linux内存替换(一)函数介绍
- 转:Linux系统调用--ptrace函数详解(2)
- linux ptrace
- linux ptrace
- ptrace注入游戏介绍
- ptrace系统调用
- ptrace系统调用
- Bionic中的ptrace函数
- ptrace函数详解
- linux poll()系统调用函数介绍
- linux 分析 ptrace()
- 在 Linux 下安装基于 Python 的机器学习编程环境
- 使用WebRTC搭建前端视频聊天室-01——入门篇
- 举一反三的学习编程语言里的各个语法
- ContentReolver之打电话记录
- action的结果处理器
- linux系统函数ptrace介绍-01
- Asp.net-知识总结(3)
- 【Android多媒体】NuPlayer for HTTP Live Streaming【2】
- 面试准备--数据结构与算法(二)--二叉查找树的图文解析及其java实现
- UnrealEngine4编码风格的思考
- HDU 3987 Harry Potter and the Forbidden Forest(最小割中的最少割边)经典
- 【机房重构】总结篇
- ContentResolver之读取联系人
- CentOS6.5下Redis安装与配置