
内核编程
文章平均质量分 71
l0g1n
这个作者很懒,什么都没留下…
展开
-
SSDT Hook的两种方式
#ifndef _SSDT_H_#define _SSDT_H_#include typedef struct _SERVICE_DESCRIPTOR_TABLE{ PULONG ServiceTable; PULONG CounterTable; ULONG TableSize; PUCHAR ArgumentTable;}SERVICE_DESCRIPTOR_TABLE,原创 2013-11-28 23:54:31 · 2432 阅读 · 0 评论 -
ShadowSSDT Hook
ShadowSSDT表的获取这里的ShadowSSDT表的获取是通过函数KeAddSystemServiceTable来获取的。使用这个函数的原因:1、这个函数是已经导出的,可以在代码中直接使用。2、这个函数里面使用了ShadowSSDT,包含了ShadowSSDT的地址。可以使用WinDbg查看该函数代码,如下:kd> u KeAddSystemServiceTabl原创 2013-12-26 00:49:24 · 3486 阅读 · 1 评论 -
InlineHook是什么?
简单来说,就是修改函数体实现部分。但是如何来修改,这样修改的意义又是什么?我今天一直在寻找一个比较好的方式来说明白如何进行InlineHook,画了几次图,试了好几个工具,最后完成了一个流程,希望大家能看明白。图片:说明:左上的图片这个结构是我们在代码中写入的一个函数代码如下:__declspec(naked) NTSTATUS NtQueryD原创 2013-12-26 22:00:31 · 4316 阅读 · 4 评论 -
驱动学习总结
持续了大约两个月的驱动学习终于结束了。目前已经掌握的知识如下:1、各种类型的Hook、Patch,并都写过代码,深入理解。2、对SSDT、ShadowSSDT,内部的函数执行流程,由Ring3到Ring0层的各种函数调用关系都有深入了解。3、使用驱动处理PE头的各种信息。4、对驱动编程的框架,通信框架有了深入理解。5、可以实现对文件、进程、DLL隐藏的隐藏。6、可以实现原创 2014-03-02 17:58:37 · 1444 阅读 · 2 评论 -
HookAPI通信
这段时间学习驱动,到了HookAPI通信这部分,简单记录一下。HookAPI通信:在Ring3与Ring0之间进行数据交互,我们都知道,在调用一个函数时,该函数会调用内核中对应的函数来实现相应的功能,在这里,我们选择一个具有缓冲区的函数来传输我们自己的数据,在这个函数调用内核层对应的函数时,我们对其Hook,然后取出相应数据。做个不是太恰当的比喻,就像一个马帮,从A地(Ring3)到向B地原创 2014-02-20 11:01:16 · 1795 阅读 · 0 评论