浅谈ARM上的Ptrace

本文主要探讨了如何在ARM架构上实现Ptrace机制,用于系统调用拦截和调试。通过Ptrace,可以在用户层捕获和修改系统调用,无需深入kernel编程。文章详细分析了ARM的EABI和OABI两种调用方式,以及如何根据不同的调用方式获取系统调用号。并给出了具体的实例,展示了如何在__NR_write系统调用上进行操作。
摘要由CSDN通过智能技术生成

 

 

0x0 前言

 

 

你想过怎么实现对系统调用的拦截吗?你尝试过通过改变系统调用的参数来愚弄你的系统kernel吗?你想过调试器是如何使运行中的进程暂停并且控制它吗?你可能会开始考虑怎么使用复杂的kernel编程来达到目的,那么,你错了.实际上Linux提供了一种优雅的机制来完成这些:ptrace系统函数
ptrace提供了一种使父进程得以监视和控制其它进程的方式,它还能够改变子进程中的寄存器和内核映像,因而可以实现断点调试和系统调用的跟踪.使用ptrace,你可以在用户层拦截和修改系统调用(sys call).关于ptrace不做过多的赘述,<<玩转PTRACE>>写的已经十分详细,这篇文章重点是分析如何实现arm版的ptrace.

 

 

0x1 实现原理

(1).首先写一个简单的target程序,代码如下:

 

//target.c
#include <stdio.h>
                                                                                                                               
int flag = 1;
int count = 0;
int main(int argc,char* argv[])
{
        while(flag)
        {
                printf("Target is running:%d\n", count);
                count++;
                sleep(3);
        }
        return 0;
}

(2).接下来写trace程序来捕获syscall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值