传说修改cr0寄存器后再写SSDT在多核CPU不稳定,因此提供一个更加稳定的写SSDT表的方式,代码如下
//
//
挂钩函数
//
BOOL HookSSDT()
...
{
PMDL pMdlSystemCall = NULL;
DWORD * MappedSystemCallTable = 0;
pMdlSystemCall = IoAllocateMdl(
KeServiceDescriptorTable->ntoskrnl.ServiceTable,
KeServiceDescriptorTable->ntoskrnl.CounterTable*4,
0,
0,
NULL
);
if(!pMdlSystemCall)
return FALSE;

针对多核CPU中修改cr0寄存器后写入SSDT可能导致的不稳定性,本文提出了一种使用MDL(Memory Descriptor List)的更稳定方法来实现SSDT Hook。代码实现包括HOOK_SYSCALL、UNHOOK_SYSCALL和SYSCALL_INDEX的定义。
最低0.47元/天 解锁文章
561

被折叠的 条评论
为什么被折叠?



