易语言自写驱动源码
系统结构:DriverEntry,Irp分派,Irp创建关闭,驱动卸载过程,Hook,UnHook,my_NtOpenProcess,去除内存保护,还原内存保护,取内核原始地址_NtOpenProcess,取内核原始地址_KeServiceDescriptorTable,Call,取内核原始地址_ObOpenObjectByPointer,CALL_,读变量整数型,取内核当前地址,读驱动对象,写驱动对象,DbgPrint,写设备对象,创建符号链接,创建驱动设备,删除驱动设备,RtlFreeUnicodeString,删除符号链接,RtlAnsiStringToUnicodeString,RtlInitAnsiString,读Irp对象,写Irp对象,驱动设备分派,读整数型,DbgPrintInt,MmGetSystemRoutineAddress,写字节集_Hook结构,写字节集_还原Hook结构,读字节集_还原Hook结构,
======DriverMain
| |
| |------ _启动子程序
| |
| |------ DriverEntry
| |
| |------ Irp分派
| |
| |------ Irp创建关闭
| |
| |------ 驱动卸载过程
| |
| |------ Hook
| |
| |------ UnHook
| |
| |------ my_NtOpenProcess
| |
| |
======功能
| |
| |------ 去除内存保护
| |
| |------ 还原内存保护
| |
| |------ _取指针地址
| |
| |------ 取内核原始地址_NtOpenProcess
| |
| |------ _取字节集地址
| |
| |------ 取内核原始地址_KeServiceDescriptorTable
| |
| |------ Call
| |
| |------ 取内核原始地址_ObOpenObjectByPointer
| |
| |------ CALL_
| |
| |------ 读变量整数型
| |
| |------ 取内核当前地址
| |
| |
======调用的Dll
| |
| |---[dll]------ 读驱动对象
| |
| |---[dll]------ 写驱动对象
| |
| |---[dll]------ DbgPrint
| |
| |---[dll]------ 写设备对象
| |
| |---[dll]------ 创建符号链接
| |
| |---[dll]------ 创建驱动设备
| |
| |---[dll]------ 删除驱动设备
| |
| |---[dll]------ RtlFreeUnicodeString
| |
| |---[dll]------ 删除符号链接
| |
| |---[dll]------ RtlAnsiStringToUnicodeString
| |
| |---[dll]------ RtlInitAnsiString
| |
| |---[dll]------ 读Irp对象
| |
| |---[dll]------ 写Irp对象
| |
| |---[dll]------ 驱动设备分派
| |
| |---[dll]------ 读整数型
| |
| |---[dll]------ DbgPrintInt
| |
| |---[dll]------ MmGetSystemRoutineAddress
| |
| |---[dll]------ 写字节集_Hook结构
| |
| |---[dll]------ 写字节集_还原Hook结构
| |
| |---[dll]------ 读字节集_还原Hook结构
调用的DLL命令:
.DLL命令 读驱动对象, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, DRIVER_OBJECT, 传址
.参数 源地址, 整数型
.参数 大小, 整数型
.DLL命令 写驱动对象, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型
.参数 源地址, DRIVER_OBJECT, 传址
.参数 大小, 整数型
.DLL命令 DbgPrint, , "ntoskrnl.lib", "@_DbgPrint"
.参数 内容, 文本型
.DLL命令 写设备对象, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型, 传址
.参数 源地址, 整数型
.参数 大小, 整数型
.DLL命令 创建符号链接, 整数型, "ntoskrnl.lib", "_IoCreateSymbolicLink@8"
.参数 SymbolicLinkName, UNICODE_STRING, 传址
.参数 DeviceName, UNICODE_STRING, 传址
.DLL命令 创建驱动设备, 整数型, "ntoskrnl.lib", "_IoCreateDevice@28", , .
.参数 DriverObject, 整数型
.参数 DeviceExtensionSize, 整数型
.参数 DeviceName, UNICODE_STRING, 传址
.参数 DeviceType, 整数型
.参数 DeviceCharacteristics, 整数型
.参数 Exclusive, 逻辑型
.参数 DeviceObject, 整数型, 传址
.DLL命令 删除驱动设备, , "ntoskrnl.lib", "_IoDeleteDevice@4"
.参数 DeviceObject, 整数型
.DLL命令 RtlFreeUnicodeString, , "ntoskrnl.lib", "_RtlFreeUnicodeString@4"
.参数 UnicodeString, UNICODE_STRING, 传址
.DLL命令 删除符号链接, , "ntoskrnl.lib", "_IoDeleteSymbolicLink@4"
.参数 SymbolicLinkName, UNICODE_STRING, 传址
.DLL命令 RtlAnsiStringToUnicodeString, 整数型, "ntoskrnl.lib", "_RtlAnsiStringToUnicodeString@12"
.参数 DestinationString, UNICODE_STRING, 传址
.参数 SourceString, ANSI_STRING, 传址
.参数 AllocateDestinationString, 逻辑型
.DLL命令 RtlInitAnsiString, , "ntoskrnl.lib", "_RtlInitAnsiString@8"
.参数 DestinationString, ANSI_STRING, 传址
.参数 SourceString, 文本型, 传址
.DLL命令 读Irp对象, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, IRP, 传址
.参数 源地址, 整数型
.参数 大小, 整数型
.DLL命令 写Irp对象, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型
.参数 源地址, IRP, 传址
.参数 大小, 整数型
.DLL命令 驱动设备分派, , "ntoskrnl.lib", "_IoCompleteRequest@8"
.参数 Irp, 整数型
.参数 PriorityBoost, 整数型
.DLL命令 读整数型, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型, 传址
.参数 源地址, 整数型
.参数 大小, 整数型
.DLL命令 DbgPrintInt, , "ntoskrnl.lib", "@_DbgPrint"
.参数 Format, 文本型
.参数 Value, 整数型
.DLL命令 MmGetSystemRoutineAddress, 整数型, "ntoskrnl.lib", "_MmGetSystemRoutineAddress@4"
.参数 SystemRoutineName, UNICODE_STRING
.DLL命令 写字节集_Hook结构, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型
.参数 源地址, Jmp结构, 传址
.参数 大小, 整数型
.DLL命令 写字节集_还原Hook结构, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 整数型
.参数 源地址, 还原Hook结构, 传址
.参数 大小, 整数型
.DLL命令 读字节集_还原Hook结构, , "ntoskrnl.lib", "@_memcpy"
.参数 目的变量, 还原Hook结构, 传址
.参数 源地址, 整数型
.参数 大小, 整数型
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。