📄 hookmng.cpp
字号:
#include "HookMng.h"
void HookMng::ClearHooks()
{
mHooksDeque.clear();
Hook tempHook;
for(size_t i=0;i < mHooksInfo.size() ; ++i)
{
tempHook.mFuncSST_ID = mHooksInfo[i].mFuncSST_ID;
// Replacing true function ptr with new function ptr
tempHook.mpNewFuncPtr = mHooksInfo[i].mpTrueFuncPtr;
tempHook.mpTrueFuncPtr = mHooksInfo[i].mpNewFuncPtr;
// Calling HookInstalling
QueueHook(tempHook);
}
ApplyQueuedHooks();
mHooksInfo.clear();
}
bool HookMng::QueueHook(IN Hook& refHook)
{
mHooksDeque.push_back(refHook);
return true;
}
bool HookMng::ApplyQueuedHooks()
{
return ExSetHook<HookMng>(*this,&HookMng::ExApplyQueuedHooks);
}
void HookMng::ExApplyQueuedHooks()
{
Hook *pHook = NULL;
while(!mHooksDeque.empty())
{
pHook = &(mHooksDeque.front());
// Saving previous address of function in SST
pHook->mpTrueFuncPtr = pNtoskrnl->ServiceTable[pHook->mFuncSST_ID];
// Replacing true function ptr by new function ptr in SST
pNtoskrnl->ServiceTable[pHook->mFuncSST_ID] = pHook->mpNewFuncPtr;
mHooksInfo.push_back(*pHook);
mHooksDeque.pop_front();
}
}
void HookMng::CleanQueuedHooks()
{
mHooksDeque.clear();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -