首先要明确的是
其他进程是调用 哪个api 去查询的进程信息,
用hook api的技术区拦截 进程调用这个api 或 拦截的同时先执行自己的函数,然后根据自己的要求是否去调用原型的api
对于hook api的范围,一般的hook的范围为该进程,由于系统的写入时拷贝机制,如果修改了api的代码,这个api的代码只作用局该进程,如果要对所有进程调用该api起作用,必须要hook 系统内核,也就是 hook SSDT,
要实现hook技术,要编写标准的dll文件或者汇编,毕竟hook 是修改别的进程调用这个api的内存地址,要么把调用改api地址的值改成自己函数的值,要么找到api函数入口地址,把指令改成自己的指令。
hookapi技术本身有多种实现方式,如何对于那些很了解PE结构的人来说,肯定是 修改 IAT 来实现hook,不熟悉的 就直接修改 api 函数的入口地址的前几个字节指令,换成一个跳转指令,跳到自己的函数地址,并且这个方式也简单
下面是一个简单的 Hook GetCursorPos返回值的例子,主要是修改 api 入口地址的 前面几个字节的指令。