摘要:
这里的简单驱动保护就是简单的HOOK掉内核API的现象找到被HOOK的函数的当前地址在此地址处先修改页面保护属性然后写入5个字节。5个字节就是一个简单的JMP指令。这里说一下JMP指令,如下:001JMP002这样我们就会跳到001(在此地址写入JMP指令)+002(我们要写入的JMP操作数)+5(jmp指令的字节数)这里、就是说如果你要跳回NtOpenProcess的原地址,就应该向被HOOK后的地址处写入这样的指令JMP(NtOpenProcess的原地址-被HOOK后的地址-5)为什么要减5呢?这么考虑,原地址为0,现在HOOK后为10,当你在HOOK的地址处写处JMP0后,IP到15到 阅读全文
摘要:
Ring3中的NATIVE API,和Ring0的系统调用,都有同名的Zw和Nt系列函数,一度让初学者感到迷糊。N久前的我,也是相当的迷糊。现在就以ZwOpenProcess和NtOpenProcess函数为例,详细阐述下他们的分别和联系。ntdll.dll导出了NtOpenProcess和ZwOpenProcess两个函数,我们记为ntdll!NtOpenProcess和ntdll!ZwOpenProcess。仔细看一下,会发现他们的入口点实际上都是一样的,这就是说,ntdll!ZwOpenProcess仅仅是ntdll!NtOpenProcess函数的别名而已,实现如下:ZwOpenPro 阅读全文