Hook中文翻译为钩子,可以用来截获调用函数,并改变函数的行为。Windows和Linux都提供了相应的实现机制。这篇文章是针对Linux平台的。也是在学习协程库libco过程中接触到的。

正文:

如果你是一个开发者,并期望去改变一个库函数的行为,那么这篇文章将带你入门——只是用库函数做实验。所有的代码是用C写的,在Linux上面使用GCC编译测试。

根据维基百科,“在计算机程序中,hook包含一系列的技术,通过在软件中截获系统调用、消息或者事件,改变或者增强操作系统、应用程序或者其他软件模块的行为。那些处理这些拦截系统调用,事件或者消息的代码就称为hook。”

截获一个系统调用,或者调用你自己的外壳代码,也称为函数介入。

Hook有两个好处:

 •你不需要到像libc(glibc是GNU的C库,libc差不多是glibc的一半大小)一样的库里查找函数的定义,并改变它。严肃地说,这是非常下流的技术(至少对我而言!)

•你不需要重新编译库的源码。

 

这两个链接比较好,务必好好学习。

https://blog.csdn.net/lwj_925/article/details/78503600

http://www.cnblogs.com/LittleHann/p/3854977.html?utm_source=tuicool&utm_medium=referral

 

 

 

 

Logo

更多推荐