库打桩机制是指可以截获共享库函数的调用,转而执行自己的代码。使用该机制,可以追踪对某个库函数调用次数,验证和追踪它的输入输出值,或者直接替换成自己的实现。
基本思想是:给定一个需要打桩的目标函数,创建一个包装函数,它的原型与目标函数完全一样。使用某种特殊的打桩机制,你可以欺骗系统调用包装函数而不是目标函数了。
分为:编译时打桩,连接时打桩,运行时打桩。
编译时打桩:需要能过访问源代码;
链接时打桩:需要能够访问程序的可重定位对象文件。
运行时打桩:只需要能够访问可执行目标文件,主要基于动态链接器的LD_PRELOAD环境变量。