两者都允许您在内核地址中的特定指令上放置探测。
如果您注册了一个k探头,那么pre_handler将在实际函数之前执行,post_handler将在实际函数之后执行。
使用kret探测,您可以让entry_handler在实际函数之前执行,ret_handler在实际函数之后执行,它包含函数调用的返回值。
所以,与kret探针相比,使用k探针的优点是什么,因为kret探针具有k探针的特性加上函数的返回值。
发布于 2018-12-17 09:38:24
可以在任何指令上放置一个k探头,而不仅仅是在内核函数开始时的(当然,如果在给定的内核代码中允许使用)。K探头的处理程序在指令之前和之后运行。
Kret探测只对探测函数条目和出口有意义。Kret探头的处理程序在函数的入口和退出处运行,而不是在某些指令之前和之后运行,就像k探针处理程序一样。
此外,如果您不需要在函数出口处运行代码,那么对于探测函数来说,k探针可能是一个比kret探测更好的选择(尽管费特莱可能更好)。Kret探测干扰堆栈上函数的返回地址,以使处理程序得到执行。如果函数由于其他原因而崩溃或转储回溯跟踪,那么反跟踪可能包含kret探测内部的地址,而不是真正的返回地址,这可能会让人感到困惑。
https://stackoverflow.com/questions/53790851
复制相似问题