ARM架构kprobe应用及实现分析(7.0 自动显示参数的值)

通过前面的介绍

知道参数在寄存器及堆栈的位置,我们就有可能显示参数的值

jprobe也可以显示参数的值,但是其有缺点:不能探测函数时加上偏移量

具体上下文请参考: ARM架构kprobe应用及实现分析(3.0 被探测函数说明)

导出参数的函数:

static int dump_arm_parameter(struct pt_regs *regs)
{   
   int i=0;
   unsigned int * sp = regs->uregs[13];
   printk(" func paras maybe : (0x%08x,0x%08x,0x%08x,0x%08x,0x%08x,0x%08x) \n",\
                                    regs->uregs[0],\
                                    regs->uregs[1],\
                                    regs->uregs[2],\
                                    regs->uregs[3],\
                                    *sp,\
                                    *(sp+1)\
                                    );

   return 0;
}

使用情形:

static int handler_pre(struct kprobe *p, struct pt_regs *regs)
{
        printk("shitshit kprobes name is %s pt_regs size is %d \n",p->symbol_name,sizeof(regs->uregs));
        dump_arm_regs(regs->uregs);
        dump_arm_stack((unsigned int *)regs->uregs[13],5);
        dump_arm_parameter(regs);
	return 0;
}

 

kernel log 输出如下:

func paras maybe : (0x00000011,0x00000022,0x00000033,0xc077c670,0x00000044,0x00000055)

与我们实际传入的一致

 

good luck

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值