10. Hook技术

一、前言

Hook翻译过来为‘挂钩’‘钩子’,是一种非常形象的叫法,它的原理并不难懂:在合适的地点挂上一个钩子,等待目标进入。

将其比喻为现实中的例子,可以想象有一条河流,河流自上而下流动可以看作程序的执行过程,而Hook就是在河流的某个地方布上一张大网。

河流想要流下去,那就必须要通过这张网,而我们在其通过的这一瞬间,就能完成一系列巧妙的事情,比如修改其原本的运行流程、变量的值等等。

但Hook远比河流中的一张网更加强大!

二、简单介绍

一个简单的C++程序就能演示这一过程:

#include<iostream>
using namespace std;

void fun(int t) {
	cout << t << endl;
}
int main()
{
	int a = 10;
	fun(a);
}

上面的程序就演示了一个最基本的运行逻辑,代码从main函数开始,向fun函数传入变量a,然后进入函数中打印这个a的值。

此时,如果有一张网,也就是Hook代码,插在了函数调用前,去修改了a的值:

int a=10;
{ //假设有一段hook代码插入在了这里
    a=20;
}
fun(a);
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux