// 钩子注入
#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