-
-
[求助]特殊的HOOK问题
-
发表于:
2011-5-22 16:12
6817
-
这样的,我的hook希望非常早的hook一些api函数,主要是想抢在一些crt初始化之前,比如crt里有些全局类实例的前面,比如我要hook NtOpenFile,我们一般就是写代码在main函数里开始hook的安装,但这个时机已经太晚了,当然写一个全局类 然后在这个类的构造函数里做hook安装也不可以,因为C++编译器不保证全局变量的构造函数的调用顺序。
所以就是想用 两个进程的方式完成hook,一个是launcher进程,另一个是被hook进程,launcher 使用 CreateProcess 带上 CREATE_SUSPENDED 这个flag参数用挂起方式启动需要hook的进程,然后通过writeprocessmemroy这个api来完成hook,也就是说要hook的进程只要把hook函数写好,让launcher来完成这个hook,然后再用ResumeThread来恢复已经hook好的进程。注意两个进程都是自己写的,代码都受自己控制。
但是现在问题来了,我要在需要hook的进程里写hook函数(也就是用来替换目标函数的函数)比如
我写个
NTSTATUS NewNtOpenFile(PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
PIO_STATUS_BLOCK IoStatusBlock,
ULONG ShareAccess,
ULONG OpenOptions)
{
1 做一些自己事情
2 调用原始的函数并返回
}
不管是inline hook 还是 导入表方式hook 这些倒不是问题,
问题就是我怎么在launcher进程里知道 NewNtOpenFile 这个函数的位置呢
,请大牛指点,
另外这个hook只是自己的一个想法,如果有更简单的方法请告知谢谢各位
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)