很多时候,我们在探针中想要获取更多的有用的信息, 比如函数的入参和返回值, 这里我们介绍如何
从寄存器中获取入参和返回值, 注意, 这种方式十分依赖使用的平台和ABI约定,下面我们仅以x64平台
下的函数调用约定中获取
register(“rdi”) 第一个参数
register(“rsi”) 第二个参数, 依次类推
register(“rax”) 返回值 (x64函数调用约定rax保存返回值)
parsestat.stp片段:
probe process("process").function("choose_custom_plan").return {rtu = regsiter("rax") // 获取返回值plan = kernel_long(register("rdi")+0x88) // 从第一个参数指向的内存中拷贝if(rtu == 0 && plan == 0) {saveplan++}}
