随笔分类 - 驱动
摘要:在32位Windows中我们有很多定位SSDT的方法,最直接的就是利用导出符号来找到SSDT。再有就是通过在nt!KeAddSystemServiceTable函数中进行反汇编搜索。可是在64位WINDOWS中这两种方法都行不通。在64位Windows中不在导出SSDT了,同时nt!KeAddSys
阅读全文
摘要:在 WIN64 上枚举内核模块的人方法:使用 ZwQuerySystemInformation 的第 11 号功能和枚举 KLDR_DATA_TABLE_ENTRY 中的 InLoadOrderLinks 双向链表;隐藏内核模块的通用方法是把指定的驱动对象从 KLDR_DATA_TABLE_ENTR
阅读全文
摘要:内核里操作文件 RING0 操作文件和 RING3 操作文件在流程上没什么大的区别,也是“获得文件句柄->读/写/删/改->关闭文件句柄”的模式。当然了,只能用内核 API,不能用 WIN32API。在讲解具体的代码之前,先讲解一下文件系统的流程,让大家对整个文件系统有个大概的了解。 假设我们要读写
阅读全文
摘要:1.遍历链表。内核里有很多数据结构,但它们并不是孤立的,内核使用双向链表把它们像糖 葫芦一样给串了起来。所以遍历双向链表能获得很多重要的内核数据。举个简单的例子,驱 动对象 DriverObject 就是使用双向链表给串起来的,遍历这个链表就可以枚举内核里所有的驱动。示例代码如下 2.等待。这个等于
阅读全文
摘要:分析了一下360的HOOK,通过直接hook KiFastCallEntry实现以所有系统调用的过滤。我分析的版本如下:主程序版本: 6.0.1.1003HookPort.sys版本: 1, 0, 0, 1005HookPort.sys的TimeStamp: 4A8D4AB8简单说明:360把所有被
阅读全文
摘要:某些时候我们需要读写别的进程的内存,某些时候别的进程已经对自己的内存读写做了保护,这里说四个思路(两个R3的,两个R0的)。 方案1(R3):直接修改别人内存 最基本的也最简单的就是直接通过WriteProcessMemory 和 ReadProcessMemory对没有进行保护的程序的内存进行修改
阅读全文
摘要:强制解锁因其他进程占用而无法删除的文件。 1.调用 ZwQuerySystemInformation 的 16 功能号来枚举系统里的句柄 2.打开拥有此句柄的进程并把此句柄复制到自己的进程 3.用 ZwQueryObject 查询句柄的类型和名称 4.如果 发现此句柄的类型是文件句柄, 名称和被锁定
阅读全文
摘要:在内核里操作进程 在内核里操作进程,相信是很多对 WINDOWS 内核编程感兴趣的朋友第一个学习的知识点。但在这里,我要让大家失望了,在内核里操作进程没什么特别的,就标准方法而言,还是调用那几个和进程相关的 NATIVE API 而已(当然了,本文所说的进程操作,还包括对线程和 DLL 模块的操作)
阅读全文
摘要:在 Ring3 下获取到当前 Windows 操作系统下的所有的进程无外乎以下的几种方法: 第一种:使用 ToolHelp 遍历获取到所有进程,关于这种方式的话,笔者以前写过一篇博文的, 《列举 Windows 所有进程(ToolHelp)》博文地址如下: http://www.cnblogs.co
阅读全文
摘要:最近对驱动比较感兴趣,所以打算做个windows下面的驱动,正好自己电脑的鼠标左键的单击有的时候会变双击,所有打算弄个鼠标的过滤驱动来解决这个问题。 网上找了一下,原来早就有人做了这个功能 http://download.csdn.net/detail/guijc1/5263421(不是故意给这个打
阅读全文
摘要:通过Hook SSDT (System Service Dispatch Table) 隐藏进程 1.原理介绍: Windows操作系统是一种分层的架构体系。应用层的程序是通过API来访问操作系统。而API又是通过ntdll里面的核心API来进行系统服务的查询。核心API通过对int 2e的切换,从
阅读全文
摘要:要知道FSDHook原理,首先我们必须了解什么是FSD,也就是FileSystem。我们电脑上的文件系统ntfs.sys,他有个设备\FileSystem\Ntfs,这个设备是用IoCreateDevice创建,跟我们写驱动的时候一样,那么我们可以通过这个设备,来对ntfs做一些操作,跟ntfs驱动
阅读全文
摘要:内核字符串处理函数和IRQL --by 张佩 系统中断级(IRQL) 借助于IRQL机制,系统实现了任务抢占功能。高中断级任务可以任意抢占低中断级任务的系统执行权,而低中断级任务必须等待所有高中断级任务都完成后,才能获取执行机会和相应系统资源。在单核系统中,系统中断级还被用做实现系统同步机制的手段,
阅读全文
摘要:何谓可分页和非分页内存 1)默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。 但是,你可以告诉加载器你希望驱动的哪部分是可分页,所谓可分页,就是
阅读全文
摘要:内核对象是指windows内核实现的一组更为基础的对象。 1.内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到这些数据结构并直接改变它们的内容 2.当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄 _OBJECT_DIRECTORY 内核对象散列表结构 _OBJ
阅读全文
摘要:在R3下获取一个进程加载的相关模块儿还是比较简单的,直接通过ToolHelp32库API就能够获取到进程关联的模块儿了,但是既然已经在R0下混了再去使用R3层的东西就没什么意义了,所以这里小悠在这里将会一部一部的介绍如何在R0下通过EPROCESS结构获取到进程加载的模块. 首先这里我们先介绍一下我
阅读全文
摘要:CreateProcesssA 函数工作流程分析: 用IDA打开CreateProcessA跟进,调用流程:call kernel32!CreateProcesssAcall kernel32!CreateProcessInternalAcall kernel32!CreateProcessInte
阅读全文
摘要:用IDA, OD分析kernel32.dll的API调用流程,知其所以然。 1.用CreateFileW,CreateFileA函数来分析 CreateFileA 整个流程: kernel32.dll!CreateFileA流程 kernel32.dll!Basep8BitStringToDynam
阅读全文
摘要:OpenProcess-->ntdll!NtOpenProcess-->ntdll!zwOpenProcess-->ntdll!KiFastSystemCall() ↓mov edx, esp ↓sysenter 用户层 ↓ 内核层 nt!KiFastCallEntry() ↙ ↘ nt!zwope
阅读全文

浙公网安备 33010602011771号