../
// 钩子注入
#import "/template.typ":doc-template

#doc-template(
title: "钩子注入",
date: "2022年11月15日",
body: [

钩子(hooking)是外挂开发中的常用技巧:把一小段机器码(通常是一个jmp指令)放到内存中原本是正常函数的地方,就可以改变这个函数的行为。这个技巧不仅在外挂开发中有用,在软件测试当中也很有用,可以用来mock一个非虚函数。钩子实现起来也非常简单。

比如下面这段代码:

```
#include <stdio.h>

int func()
{
    printf("hello, beautiful world");
    return 0;
}

int main()
{
    return func();
}
```

虽然在这里如果想要修改func函数很简单,但是可以假设其实func函数是在一个动态链接库里面,或者一个静态库里面,我们没有其源代码。这时候就可以利用钩子在运行

...

Email: i (at) mistivia (dot) com