随笔分类 - Windows Driver Dev
摘要:#include <stdio.h>#include <windows.h>#include <winioctl.h>int main(void){// LPCTSTR lpszDevice = "\\\\.\\PhysicalDrive1"; LPCTSTR lpszDevice = "\\\\.\\C:"; HANDL...
阅读全文
摘要:对于存储设备,Class Driver(如disk.sys、cdrom.sys、ramdisk.sys)将IRP转换成SRB,发往port Driver(如USBSTOR.sys或atapi.sys)。 如果过滤disk.sys,可以将发往disk.sys的IOCTL_DISK_IS_WRITABLE,状态码返回STATUS_MEDIA_WRITE_PROTECTED。 如果过滤usbstor...
阅读全文
摘要:kd> x nt!MmSystem* 80469b80 nt!MmSystemDriverPage = <no type information> 80469508 nt!MmSystemLockOwner = <no type information> 8047e940 nt!MmSystemPageDirectory = <no type informati...
阅读全文
摘要:以前看一直没有太仔细,今天分析一下。 0xC0300000的高10bit是0x300,中间10bit也是0x300,高20位(高10位加中间10位)是0xC0300,这就是奥妙所在。 这样导致一个结果,就是。 因为0xC0300000对应的PDE位置是0xC0300000+0x300*4=0xC0300C00,对应的PTE位置是0xC0000000+0xC0300*4=0xC0300C00
阅读全文
摘要:WebCrazy(http://webcrazy.yeah.net) 对于Driver编写者,最之烦琐的莫过于各种内存缓冲区的使用(谈到缓冲区,你可能还会想到诸如MDL等概念,其实MDL只是对StartVa指定的Pool的Page Frame Number进行组织而已)。在用户态对于小块零星的内存使用牵涉到Heap,Windows 2000/XP在核心态提供了...
阅读全文
摘要:编写一个test.exe,在这个进程的上下文中,内核断住。 kd> !process 0 1 test.exe PROCESS 83c74d60 SessionId: 0 Cid: 0360 Peb: 7ffdf000 ParentCid: 035c DirBase: 1436000...
阅读全文
摘要:CR3为PDE表的指针(物理地址),对于不同的进程CR3数值是不同的,但对应的虚拟地址恒为C0300000(在XP下是C0600000)。 实验:查看0x80000000虚拟地址所对应的物理地址。 查看 kd> dd /p cr3+800 (通过物理内存查看) 或者 kd> dd c0300000+800(通过对应的虚拟内存查看) c0300800 000001e3 00...
阅读全文
摘要:方法一: kd>rM 0x80(注意大消息!) 方法二: kd>? cr3
阅读全文
摘要:---------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------...
阅读全文
摘要:其中的errorLogEntry->ErrorCode = 100会在 ------------------------------------------------------------------ ------------------------------------------------------------------
阅读全文
摘要:extern "C"{ extern PULONG KeServiceDescriptorTable;};
阅读全文
摘要:标题: Windows文件系统驱动程序编程相关链接 维护: 小四 <scz@nsfocus.com> 链接: http://www.opencjk.org/~scz/resource/200402112302.txt 创建: 2004-02-11 23:02 更新: 2005-11-29 11:22 -- 如有推荐,请发信至<sc...
阅读全文
摘要://////////////////////////////////////// // New Deployment Module for rootkit 040 // ------------------------------------- // -Greg Hoglund http://www.rootkit.com /////////////////////////////////////...
阅读全文
摘要:对于ntdll.dll来说 NtReadFile和ZwReadFile来说,其实是同一个函数。 对于内核来说 NtReadFile就是系统调用 ZwReadFile就是重新通过int 0x2e或者sysenter进入kernel,然后进入系统调用。
阅读全文
摘要: 安装一个摄像头的驱动,结果一直出错,进入日志中查看,说是:c:\windows\system32\drivers\usbscan.sys 上进行文件替换。 为了维护系统稳定,这个文件被还原成原始版本。 不正确文件的版本是 5.1.2600.1106,系统文件的版本是 5.1.2600.2180。 ...
阅读全文
摘要:Types of APCsAn asynchronous procedure call (APC) is a function that executes asynchronously. APCs are similar to deferred procedure calls (DPCs), but unlike DPCs, APCs execute within the context of a...
阅读全文
摘要:1.lm命令 lm m s* lm lmsm 2.看堆栈调用 kb 3.断点(有符号) bp HelloDDK!DriverEntry 4.断点(无符号) sxe ld HelloDDK 这样会断在nt!DebugService2+0x10的位置。 然后按三次Shift+F11,会跳到nt!IopLoadDriver+0x370 在IopLoadDriver中函数中寻找,会经过nt!...
阅读全文
摘要:#define KeQueryTickCount(CurrentCount ) { \ volatile PKSYSTEM_TIME _TickCount = *((PKSYSTEM_TIME *)(&KeTickCount)); \ while (TRUE) { \ (CurrentCount)->HighPart = _TickCount->High1Time; \ (Cu...
阅读全文
摘要:创建一个虚拟鼠标,在AddDevice中 status = IoCreateDevice (DriverObject, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_MOUSE, 0, true, // Not exclusive &fdo);这样创建的设备,即便创建符号链接,也不可能在应用程序中打开。这需要在DriverEntry中创...
阅读全文

浙公网安备 33010602011771号