-
-
[原创]一个有趣的APIHook用宏
-
发表于:
2015-3-28 21:37
6239
-
不管用什么APIHook库,或怎样实现APIHook都避免不了要
先声明一个函数指针存储要Hook的函数指针,再声明一个跳转函数的实现函数。
这里以detours给的一段例子作为说明
1 2 3 4 5 6 | static DWORD (WINAPI * TrueSleepEx)(DWORD dwMilliseconds, BOOL bAlertable);
DWORD WINAPI TimedSleepEx(DWORD dwMilliseconds, BOOL bAlertable)
{
return TrueSleepEx(dwMilliseconds, bAlertable);
}
|
如果HOOK的函数比较少,倒是没什么,但如果Hook的函数多了,譬如行为分析类程序,那会让人抓狂的。
这时,一个不错的宏就派上用场了
1 2 3 | return_value (calling_convention *Real_
return_value calling_convention Mine_
|
这时上面的代码,就可简化为
1 2 3 4 5 6 | HOOKDEF(DWORD , WINAPI, SleepEx,
DWORD dwMilliseconds,
BOOL bAlertable)
{
return Real_SleepEx(dwMilliseconds, bAlertable);
}
|
上面的那个宏定义来自于 cuckoo的开源代码,对行为分析有兴趣的可以看下
https://codeload.github.com/cuckoobox/cuckoomon/zip/master
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!