libco源码阅读(八):hook机制

1. hook机制是什么

2. 动态连接和静态连接

    2.1 编译过程

    2.2 静态链接

    2.3 动态链接

3. hook机制的实现

    3.1 使用环境变量LD_PRELOAD

    3.2 源码入侵


    跟着某位大佬的博客一步步看完了libco源码,本以为看到co_eventloop算是把源码看完了,但是没想到接着往下看,竟然还有一个hook机制,编程这么多年,还从未这么使用过,hook着实是编程里面的一个奇淫技巧。总之,多看优秀源码,对提高自己的编程水平大有裨益。下面一起来看看hook到底是什么东西。

1. hook机制是什么

    hook机制本质上是一种函数的劫持技术,比如我们通常需要调用malloc函数来进行内存分配,那么能不能我们自己封装一个同名、同入参和同返回值的malloc函数来替代系统的malloc函数,在我们自己封装的malloc函数中实现一些特定的功能,而且也能回调系统的malloc,这就是hook机制。

    系统提供给我们的dlopen、dlsym族函数可以用来操作动态链接库,比如我们要hook系统调用函数read,我们可以使用dlsym族函数获取hook前函数的地址,这样就可以在自己实现的read中回调原函数,并加上一些额外的逻辑,并且在运行是会调用我们的版本了。

    通过hook机制,libco可以达到用户无感的情况下把同步的代码替换为异步,这也是腾讯工程师写出libco的目的。libco库里面提供了socket族函数的ho

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值