首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
-------- ROOTKIT 核心技术——系统服务调度表挂钩调试(PART III) --------
】的更多相关文章
-------- ROOTKIT 核心技术——系统服务调度表挂钩调试(PART III) --------
---------------------------------------------------------------------------------------- 本篇开始进行真枪实弹的调试,本文的最后会附上完整的源码包,方便各位在自己的机器上演练. 如果安装了 Windows Driver Kits,在"开始"->"所有程序"中选择类似"WDK 7600.16385.1"的项目.具体的数字取决于你安装的 WDK 开发环境版本…
Rootkit 核心技术——利用 nt!_MDL(内存描述符链表)突破 SSDT(系统服务描述符表)的只读访问限制 Part I
-------------------------------------------------------- 在 rootkit 与恶意软件开发中有一项基本需求,那就是 hook Windows 内核的系统服务描述符表(下称 SSDT),把该表中的 特定系统服务函数替换成我们自己实现的恶意例程:当然,为了确保系统能够正常运作,我们需要事先用一个函数指针保存原始 的系统服务,并且在我们恶意例程的逻辑中调用这个函数指针,此后才能进行 hook,否则损坏的内核代码与数据结构将导致 一个 BugCh…
-------- Rootkit 核心技术——利用 nt!_MDL 突破 KiServiceTable 的只读访问限制 Part II --------
------------------------------------------------------------------------------------------- 本篇开始进入正题,因为涉及 MDL,所以相关的背景知识是必须的: nt!_MDL 代表一个"内存描述符链表"结构,它描述着用户或内核模式虚拟内存(亦即缓冲区),其对应的那些物理页被锁定住, 无法换出. 因为一个虚拟的,地址上连续的用户或内核缓冲区可能映射到多个不连续的物理页,所以 nt!_MDL 定长(0…
----------- Rootkit 核心技术之绕过 IopParseDevice() 调用源检测逻辑 ---------------
---------------------------------------------------------------- 在上一篇文章中,我们已经看到 IopParseDevice() 如何对传入的 OPEN_PACKET 结构进行验证.假设 ObReferenceObjectByName() 的调用者没有分配并初始化第七个参数 ParseContext,而仅是简单地传入 "NULL" ,那么当调用链深入到 IopParseDevice() 内部时,就会因验证失败返回 C000…
------- 软件调试——还原 QQ 过滤驱动对关键内核设施所做的修改 -------
-------------------------------------------------------------------------------- 在前一篇博文中,我们已经处理完最棘手的部分:杀掉 QQFrmMgr.sys 创建的系统线程.剩余的工作就轻松多了--移除 QQFrmMgr.sys 和 QQProtect.sys 安装的 SSDT(系统服务调度表)钩子与 SSDT Shadow 钩子.销毁它们注册的事件通知 callback,从而将系统恢复至干净状态. 在此之前,按照惯…
------- 软件调试——挫败 QQ.exe 的内核模式保护机制 -------
------------------------------------------------------------------------ QQ 是一款热门的即时通信(IM)类工具,在安装时刻会向系统分区的 \..\windows\system32\drivers 路径下生成两个驱动程序文件: QQProtect.sys 与 QQFrmMgr.sys ,前者是 QQProtect.exe(QQ 安全防护进程,又称 Q 盾)的内核模式组件:后者是一种过滤型驱动. 同时还会向注册表位置 HKE…
【黑客免杀攻防】读书笔记17 - Rootkit基础
1.构建Rootkit基础环境 1.1.构建开发环境 VS2012+WDK8 1.2.构建基于VS2012的调试环境 将目标机.调试机配置在同一个工作组内 sVS2012配置->DRIVER->Test->Configure Computers,Add New computer按钮. 1.3.构建基于Windbg的调试环境 WinDBG+Vmware+VirtualKD 1.4.将Rootkit加载到系统 SCM(服务控制管理器)加载驱动 OpenSCManager():获取SCM句柄…
Windbg内核调试之三: 调试驱动
这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要占用大量的系统资源,对于和我一样急性子的朋友来说这是不可接受的:).利用双机调试就可以让你一边喝咖啡一边轻松的看结果,而不至于郁闷的等待每次长达数分钟的系统响应.有关双机调试的基本设置,请参考:http://www.cnblogs.com/Sonic2007/archive/2008/03/20/1…
SSDT
2.系统服务调度表SSDT及SSSDT Shadow 系统服务:由操作系统提供的一组函数(内核函数),API可以间接或者直接的调用系统服务.操作系统以动态链接库(DLL)的形式提供API. SSDT:系统服务调度表(System Service Dispatch Table),该表可以基于系统服务编号进行索引,来定位函数内存地址. SSPT:系统服务参数表(System Service Parameter Table),指定系统服务函数的参数字节数. 系统有2个SSDT表, 一个是Ke…
Windows内核开发-Windows内部概述-2-
Windows内部概述-2- 线程: 执行代码的实体是线程.一个线程的包含在进程里面的,线程使用进程提供的资源来运行代码. 一个线程拥有以下的内容: 1:明确的运行模式,用户态或者内核态. 2:执行的环境,包括寄存器和执行状态. 3:一个或两个栈空间,用来存放变量和调用管理. 4:Thread Local Storage(TLS) 线程本地存储数组,用来存储线程专用数据和提供统一的访问语法. 5:基本的优先级和当前(动态)的优先级. 6:和处理器关联,用来指示允许线程在那个一个处理器上运行. 线…