-
承蒙风泽老大的提醒,最近准备把驱动学习笔记系列文章制作成电子书,因此连载的驱动笔记系列文章将暂停更新。本电子书适合作为其他驱动学习入门教程的辅助读物,目前正在编写中,访问灰狐 [iCoodle]获得最新进展情况。
-
关于本博客的一点说明,如果您需要联系我,或者转载文章,或者申请友情链接的话,请看这里。
-
最近在群里见到越来越多这样的情况,没办法说了。新手嘛,谁不是从新手起来的,就怎么就知道人家不理解你们新手?
学习,关键是要找对方向,要知道如何去学习!!!这一点做不到,别人哪怕手把手教你也是没多大进展的。 -
关于LSP是什么我就不多说了,假定大家都知道,不知道的可以去Google问问。
LSP其实还是很有用的,不过最近看到许多人在学习过程中老遇到一些问题,下面就把我的一些经验说出来,纯属个人理解,有错勿怪。
1,安装LSP后系统逐渐卡死?
额,我当时学习的时候曾经遇到过这个问... -
很久没写点什么了,最近在忙着做一些零碎的程序,过一段儿时间一定放新东西。
现在手头上的其中一件事情就是帮同学做一个文件保护的毕业设计,考虑再三还是使用SSDT HOOK,因为这个最简单,而且比较稳定,也容易理解。
提到文件保护,无非就是文件隐藏、文件打开、读写、删除保护等。
一、文件隐藏
&nb... -
在第二部分我们使用了一个前提:可以通过进程句柄得到PID等信息。
事实上这是可行的,这一部分我们就进行介绍。我这里使用的是炉子大虾的《API HOOK实现ring3的进程保护》一文中提到的方法。 -
在ring3的API HOOK中,怎样迫使目标进程调用我们的傀儡DLL是我们非常重视的一个问题。在多数情况下,我们都喜欢使用CreateRemoteThread在目标进程中创建一个远程线程来迫使它加载我们的DLL。
因为CreateRemoteThread的使用方法并不复杂,而且与其他方式相比,它可以称得上是一种相当“优雅”的做法。各种因素的汇集就导致了这种方法的泛滥,致使很多具备主动防御或行为监控的安全软件都加强了对这个函数的照顾。 -
在使用冰刃的时候我们可以发现它有一个“监视进线程创建”的功能,这个功能挺有用的,在用户模式下我们可以注册一个shell钩子来监视,或者通过挂钩一些进程创建的Win32 API来实现。
在内核模式下我们同样可以使用API HOOK来实现,但是还有一些简单的做法,比如我们今天要介绍的PsSetCreateProcessNotifyRoutine函数。 -
从文件句柄和注册表句柄中读取文件及注册表键完整路径的方法。
-
并不是所有的驱动都需要直接访问硬件的,事实上几乎所有的硬件设备都存在着驱动程序链,最底层的驱动程序可以直接访问硬件,并对上层提供透明服务,最上层的驱动程序只要对接收到的数据进行过滤、格式化等处理即可,这样大大减少了开发的难度。
-
我们知道,系统中一些重要的表项如SSDT是只读的,如果我们强行对其进行修改就会造成BSOD的严重后果。当然这种保护方式很容易被绕过,我们曾经介绍了通过修改cr0来禁用WP(Write Protect,写保护)位的方法,现在再介绍一种不需要使用汇编的方法,就是MDL。
-
cr0是系统内的控制寄存器之一。控制寄存器是一些特殊的寄存器,它们可以控制CPU的一些重要特性。
-
下面是一个简单的链表程序,它的功能是输入两个链表(以-1结束输入),然后将这两个链表合并起来。
-
在炉子的《API HOOK实现ring3的进程保护》一文中给出了一种解决方法,即使用NTDLL导出的Zw(Nt)QueryInformationProcess函数。
-
Detours是一个可以在x86、x64和IA64平台上测试任意Win32函数的程序开发库。它可以通过为目标函数重写在内存中的代码而达到拦截Win32函数的目的。Detours还可以将任意的DLL或数据片段(称之为有效载荷)注入到任意Win32二进制文件中。Detours 被广泛应用在微软内部和其他行业中。
-
在我昨日发布的《驱动学习笔记系列文章汇总(PDF)》第11.2节中,我没有给出使用DeviceIoControl通信的演示源码,附录中附带的程序是我尚未调试好的,因此没有达到通信的目的。
今天又认真阅读了下张帆的《Windows驱动开发技术详解》第7章的内容,并对它给出的示例程序多次调试,总算把这个通信过程给理解了,下面我们先来看看应用层程序的代码:
-
IRP是从未分页内存申请的大小可变的结构,它由两部分组成:
1,包含一般簿记信息的头区域,即IRP头。
2,若干个成为I/O堆栈位置的内存块,即I/O堆栈。 -
IRP的全名是I/O Request Package,即输入输出请求包,它是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。
-
看吧,果然是个骗子,日TNND。公安局都是吃白饭长大的啊,啥也不管,MLGBD!!!!!
同时这个事情也鲜明地证明了:百度就是个垃圾,你想要的信息都别指望找到,也就只有“百度知道”和贴吧还有点用处,找mp3就去搜狗,找网页就去Google。 -
此前我们曾经介绍过不少枚举进程的方法,现在我们来到了ring0这一层,肯定是想玩点与ring3不同的东西。 今天我们就介绍一种通过EPROCESS链表来枚举系统进程的方法。
-
此前在“【科普6】利用NTDLL导出函数枚举进程”一文中我们曾经介绍了在ring3通过动态导出ntdll.dll中的ZwQuerySystemInformation函数来枚举系统进程,那么在ring0能否调用该函数呢?
-
在ring3的编程中我们经常使用多线程来提高效率或满足一些特殊的要求,当然在内核中也是一样,我们经常需要使用几个线程来同步完成一些工作。










