摘要:
内核重载需求的产生在内核中有很多HOOK, 例如:KiFastCallEntry, SSDT,IDT,OBJECT HOOK,甚至是内核API的内联HOOK , 有些HOOK很容易找到,并还原, 有些HOOK就很难找到. 在某些时候(例如一个病毒HOOK了int3中断,这样调试器就无法得到断点事件),清除HOOK是一种反反调试的技术. 也是防护与反防护的技术. —总之内核层的对抗非常的激烈, 为了... 阅读全文
摘要:
SSDT概述通过08内核编程HOOK_KiFastCall.md可以知道,用户层的函数调用都会进入到0环, 0环将服务函数的地址实现保存在SSDT表中. KiFastCallEntry函数会使用调用号找到函数的参数个数表和函数地址表, 并将用户栈的参数拷贝到内核栈,最后调用了系统服务表中的函数.SSDT HOOK的原理很简单: 找到SSDT,将对应的函数地址进行替换,就完成HOOK了.在进行HOO... 阅读全文
摘要:
系统调用用户层的API调用最终都需要进入到0环,其功能才能够实现:上图描述的就是整个windows操作系统的体系结构. Kernel32.dll, user32.dll 等所有用户层DLL它们在调用API时,最终都会调用到ntdll.dll中. ntdll.dll是系统内核代码的存根部分,这个存根部分的代码非常的简单: 函数内部的逻辑都是一致的:将一个数值保存到eax调用一个相同的函数:edx ,... 阅读全文