2024年6月14日发(作者:)
1、要Hook的API
方法名称:OpenProcess
位置:
OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
2、大体方法
找到API函数在内存中的地址,改写函数头几个字节为JMP指令跳转到自己的代码,
执行完毕再执行API开头几个字节的内容再跳回原地址。这种方法对CPU有较大的依赖性,
而且在多线程环境下可能出问题,当改写函数代码的时候有可能此函数正在被执行,这样
做可能导致程序出错。
3、操作步骤
4、1 找到MessageBoxA的入口地址
5、2 修改入口地址的虚拟保护为可读可写类型
6、3 在入口处直接返回 也就是在MessageBoxA的入口地址处写入 retn 10(为什
么是retn 10 因为MessageBoxA最后的返回是这个参数)
7、这个其实在OD里面是很容易实现的 也就是Gtrl+G MessageBoxA 然后 retn
10
8、需要的API
9、1 GetProcAddress
10、函数功能描述:
11、GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。
12、函数原型:
13、FARPROC GetProcAddress(
14、HMODULE hModule, // DLL模块句柄
15、LPCSTR lpProcName // 函数名
16、);
17、对于我们这个题目来说 我们要通过它得到MessageBoxA的地址 如果这个函数
正常返回 那么返回值就是MessageBoxA的函数地址
18、另外DLL模块句柄 就是的句柄 函数名当然是MessageBoxA
19、那么我们怎么得到的句柄的句柄呢 请看下个函数
20、2 GetModuleHandle


发布评论