大家好,又见面了,我是你们的朋友全栈君。
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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141238.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...