↧
kretprobe探究思考
曾因朋友问到监控,致使我探究了kretprobe的实现,想到编译中的尾调用优化,作个小结1. kretprobe_trampoline_holder该跳转函数无参是必须的或说最好的通用设计,因为替换返回地址是非正常程序流程,即被探测函数的调用者无感知,不存在为跳转函数准备入参。若要设计传参且只读,则不会破坏被探测函数调用者的上下文,但跳转函数内部流程怎么用参数是个问题,这需要一种约定2....
View Article浅谈Linux共享库库函数挂钩检测
Linux共享库库函数挂钩主流两种方法。一是替换函数对应的GOT/PLT条目,GOT/PLT原理类似Windows的IAT;二是inline挂钩,即替换函数序言的几个字节(x86是5或7字节)为jmp/call,若发现稍远处有jmp或call(前提在入口基本块内,若不在入口基本块内要修改分支控制条件,这有点复杂也无必要),则其目标地址可被替换,这样就不用替换序言的几字节了。Windows的IAT挂钩...
View Article