《Windows 内核安全编程技术实践》共0篇
《Windows 内核安全编程技术实践》
驱动开发:应用DeviceIoContro模板精讲-五八三

驱动开发:应用DeviceIoContro模板精讲

在笔者上一篇文章《驱动开发:应用DeviceIoContro开发模板》简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例,但是该案例过于简单也无法独立加载运行,本章将继续延申...
admin的头像-五八三admin2年前
020
驱动开发:取进程模块的函数地址-五八三

驱动开发:取进程模块的函数地址

在笔者上一篇文章《驱动开发:内核取应用层模块基地址》中简单为大家介绍了如何通过遍历PLIST_ENTRY32链表的方式获取到32位应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过...
admin的头像-五八三admin2年前
0130
驱动开发:内核读写内存多级偏移-五八三

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申,如何实现多级偏移读写,其实很简单,读写函数无需改变,只是在读写之前提前做好计算工作,以此来得到一个内存偏移值,并通过调...
admin的头像-五八三admin2年前
040
驱动开发:内核物理内存寻址读写-五八三

驱动开发:内核物理内存寻址读写

在某些时候我们需要读写的进程可能存在虚拟内存保护机制,在该机制下用户的CR3以及MDL读写将直接失效,从而导致无法读取到正确的数据,本章我们将继续研究如何实现物理级别的寻址读写。 首先,...
admin的头像-五八三admin2年前
060
驱动开发:内核远程线程实现DLL注入-五八三

驱动开发:内核远程线程实现DLL注入

在笔者上一篇文章《内核RIP劫持实现DLL注入》介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过NtCreateThreadEx这个内核函数实现注入DLL的目的,需...
admin的头像-五八三admin2年前
050
驱动开发:摘除InlineHook内核钩子-五八三

驱动开发:摘除InlineHook内核钩子

在笔者上一篇文章《驱动开发:内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能的实现一...
admin的头像-五八三admin2年前
040
驱动开发:内核中进程与句柄互转-五八三

驱动开发:内核中进程与句柄互转

在内核开发中,经常需要进行进程和句柄之间的互相转换。进程通常由一个唯一的进程标识符(PID)来标识,而句柄是指对内核对象的引用。在Windows内核中,EProcess结构表示一个进程,而HANDLE是一...
admin的头像-五八三admin2年前
050
驱动开发:内核注册表增删改查-五八三

驱动开发:内核注册表增删改查

注册表是Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息,注册表是一个巨大的树形结构,无论在应用层还是内核层操作注册表都有独立的API函数可以使用,而在内核中读写注册表则...
admin的头像-五八三admin2年前
060
驱动开发:基于事件同步的反向通信-五八三

驱动开发:基于事件同步的反向通信

在之前的文章中LyShark一直都在教大家如何让驱动程序与应用层进行正向通信,而在某些时候我们不仅仅只需要正向通信,也需要反向通信,例如杀毒软件如果驱动程序拦截到恶意操作则必须将这个请求...
admin的头像-五八三admin2年前
030
驱动开发:文件微过滤驱动入门-五八三

驱动开发:文件微过滤驱动入门

MiniFilter 微过滤驱动是相对于SFilter传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动...
admin的头像-五八三admin2年前
070
驱动开发:内核RIP劫持实现DLL注入-五八三

驱动开发:内核RIP劫持实现DLL注入

本章将探索内核级DLL模块注入实现原理,DLL模块注入在应用层中通常会使用CreateRemoteThread直接开启远程线程执行即可,驱动级别的注入有多种实现原理,而其中最简单的一种实现方式则是通过劫持...
admin的头像-五八三admin2年前
050
驱动开发:内核解锁与强删文件-五八三

驱动开发:内核解锁与强删文件

在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理...
admin的头像-五八三admin2年前
020
驱动开发:内核ShellCode线程注入-五八三

驱动开发:内核ShellCode线程注入

还记得《驱动开发:内核LoadLibrary实现DLL注入》中所使用的注入技术吗,我们通过RtlCreateUserThread函数调用实现了注入DLL到应用层并执行,本章将继续探索一个简单的问题,如何注入ShellCode...
admin的头像-五八三admin2年前
040
驱动开发:内核LoadLibrary实现DLL注入-五八三

驱动开发:内核LoadLibrary实现DLL注入

远程线程注入是最常用的一种注入技术,在应用层注入是通过CreateRemoteThread这个函数实现的,该函数通过创建线程并调用 LoadLibrary 动态载入指定的DLL来实现注入,而在内核层同样存在一个类似...
admin的头像-五八三admin2年前
0570
驱动开发:内核遍历文件或目录-五八三

驱动开发:内核遍历文件或目录

在笔者前一篇文章《驱动开发:内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核下遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectory...
admin的头像-五八三admin2年前
0100
驱动开发:内核文件读写系列函数-五八三

驱动开发:内核文件读写系列函数

在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Z...
admin的头像-五八三admin2年前
090
驱动开发:内核读写内存浮点数-五八三

驱动开发:内核读写内存浮点数

如前所述,在前几章内容中笔者简单介绍了内存读写的基本实现方式,这其中包括了CR3切换读写,MDL映射读写,内存拷贝读写,本章将在如前所述的读写函数进一步封装,并以此来实现驱动读写内存浮点...
admin的头像-五八三admin2年前
070
驱动开发:内核解析PE结构节表-五八三

驱动开发:内核解析PE结构节表

在笔者上一篇文章《驱动开发:内核解析PE结构导出表》介绍了如何解析内存导出表结构,本章将继续延申实现解析PE结构的PE头,PE节表等数据,总体而言内核中解析PE结构与应用层没什么不同,在上一...
admin的头像-五八三admin2年前
060
驱动开发:内核解析PE结构导出表-五八三

驱动开发:内核解析PE结构导出表

在笔者的上一篇文章《驱动开发:内核特征码扫描PE代码段》中LyShark带大家通过封装好的LySharkToolsUtilKernelBase函数实现了动态获取内核模块基址,并通过ntimage.h头文件中提供的系列函数解析...
admin的头像-五八三admin2年前
0100
驱动开发:内核PE结构VA与FOA转换-五八三

驱动开发:内核PE结构VA与FOA转换

本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还...
admin的头像-五八三admin2年前
050