我正在寻找一种在Linux内核中插入函数的方法。看起来GCC的-finstrument-functions标志允许插装,但是有没有办法使用编译器指令(即函数属性)只插装一个特定的Linux函数,而不是插装所有的函数?
KProbe似乎也具有插装功能,但KProbe维护了一个函数黑名单,并且不允许监视这些函数,从而导致插装的范围有限。
我在x86_64上运行Ubuntu-16.04和内核版本4.8.11。
插装的目的是通过设置和清除标志来监视目标函数的进入和退出。
发布于 2018-04-28 01:07:20
答案是视情况而定。然而,注入并不像人们想象的那样简单。
具体地说,例如您可以对特定的C文件使用-finstrument-functions,然后使用属性((No_instrument_function))来排除您不想进行检测的那些文件
你必须跟踪抢占和快速呼叫,你必须确保你不会意外地停止或删除工具。哦,您还必须跟踪内核自己造成的任何随机堆栈布局。
https://stackoverflow.com/questions/50050676
复制相似问题