
驱动
文章平均质量分 80
小蚂蚁_CrkRes
Where there is a will, there is a way
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
添加默认派遣例程
A、初识IRP B、一个简单的IRP处理函数 C、IRP.IoStatus结构 D、IoCompleteRequest函数 IPR简介:IRP全称(I/O Request Package),即输入输出请求包。他是windows驱动的重要概念,用户模式下所有对驱动程序的I/O请求,全部由操作系统转化为一个叫做IRP的数据结构,不同的IRP数据会...原创 2018-09-16 09:38:23 · 285 阅读 · 0 评论 -
认识链表结构exe部分
A、链表结构 B、链表的初始化 C、在链表中插入数据(结点) D、链表的遍历链表: 链表有单向链表,也有双向链表,有循环的(环形),在这里我们只讨论 双向循环链表。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 认...原创 2018-09-26 22:47:58 · 212 阅读 · 0 评论 -
驱动下的异常处理
返回状态值 检查内存的可用性 异常处理try-except 异常处理try-finally 断言 NTSTATUStypedef LONG NTSTATUS; NT_SUCCESS#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0) #define STATUS_SUCCESS ...原创 2018-09-27 18:35:36 · 636 阅读 · 0 评论 -
内核模式下的字串操作
A、ASCII字符串和UNICODE字符串 B、ANSI_STRING字符串和UNICODE_STRING字符串 C、字符串的初始化与销毁 D、字符串复制,比较,(大小写,整数和字串)相互转换 E、ANSI_STRING字符串和UNICODE_STRING字符串相互转换 A、ASNI字符串和UNICODE字符串 在C语言中,有ANSI和UNICODE 两个不同字...原创 2018-09-27 19:57:06 · 234 阅读 · 0 评论 -
内核模式下的文件操作
A、文件的创建B、文件的打开C、获取和修改文件属性D、写文件和读文件 一、文件的创建InitializeObjectAttributes 初始化 POBJECT_ATTRIBUTES 结构ZwCreateFile二、文件的打开 ZwCreateFile,ZwOpenFile三、获取和修改文件属性 ZwQueryInformationFile,...原创 2018-09-27 21:11:11 · 513 阅读 · 0 评论 -
IAT表
A、初识IAT B、IAT表相关结构 C、读出IAT项 D、编写代码测试分析 E、HOOK IAT F、测试分析A、认识IAT表 导入函数表B、IAT表相关结构PIMAGE_DOS_HEADER //->e_lfanew //PE文件头偏移值PIMAGE_NT_HEADERS //->OptionalHeade...原创 2018-09-27 21:54:22 · 675 阅读 · 0 评论 -
应用层勾子InLine HOOK
A、InLine HOOK 原理分析 B、InLine HOOK 代码编写 C、InLine HOOK 代码测试在 021_绕过驱动保护 已经讲过一次 in line hook_declspec(naked) #pragma pack(1) //前5字节77D507EA > 8BFF MOV EDI,EDI77D507EC /. ...原创 2018-09-28 21:30:11 · 650 阅读 · 0 评论 -
Shadow SSDT
A、Shadow SSDT表基址定位 B、Shadow SSDT表结构 C、Shadow SSDT HOOKKeServiceDescriptorTable //系统描述符表 externKeServiceDescriptorTableShadow //影子系统描述符表 win32k.sysbp win32k!NtUserPostMessagebp win32k...原创 2018-09-28 21:35:20 · 534 阅读 · 0 评论 -
绕过所有用户层HOOK
A、分析API函数原理 B、自写API函数 C、SYSENTER指令 D、硬编码_emit E、模拟FindWindow函数 PUNICODE_STRINGMOV EAX,117A7C92E510 > 8BD4 MOV EDX,ESP7C92E512 0F34 SYSENTER ...原创 2018-10-08 19:27:06 · 1082 阅读 · 0 评论 -
驱动InLine HOOK实例
A、选取HOOK地址 B、分析等HOOK函数参数 C、构建HOOK 代码 D、实现HOOK E、测试效果 32 ssdt hook eb ba52c07e 90u nt!NtOpenProcessu nt!NtOpenProcess l 100jmp //0xE9//jmp my_NtOpenProcess // NtOp...原创 2018-10-08 19:28:29 · 860 阅读 · 0 评论 -
认识 IDT表
A、反断点的一些原理 B、认识IDT表 C、IDT表相关结构 D、读出IDT表-sidt指令 E、测试一、反断点的一些原理 1、让他不能正常下断点 (0xCC断点int 3) 2、正常下断点后,让他不能断下(IDT HOOK)二、IDT表大小 00-0xFF ,0-255返回 iretd ;中断INT n举个简单的例子...原创 2018-10-08 19:29:09 · 3140 阅读 · 0 评论 -
内存管理相关内核API
A、RtlCopyMemory,RtlCopyBytes和RtlMoveMemory C、RtlZeroMemory和RtlFillMemory D、RtlEqualMemory E、ExAllocatePool和 ExFreePool F、重载new和delete操作符RtlCopyMemory//把地址Source开始的长度为Length这块内存数据 复制到Desti...原创 2018-09-20 22:39:58 · 461 阅读 · 0 评论 -
驱动中的内存管理
A、 物理内存 B、 虚拟内存 C、 Ring0地址和Ring3地址 D、 驱动程序和进程的关系 E、 分页和非分页内存 F、 分配内核内存 以下概念针对 32位Windows操作系统(32位及以上的CPU)A物理内存:(Physical Memory Address) 目前主流的操作系统还是32位的XP,而32位的系统提供的寻址能力是232个字节,用户最多可...原创 2018-09-19 22:18:47 · 594 阅读 · 0 评论 -
编写自己的驱动过游戏保护-需要具备的理论知识
A、了解SSDT结构 B、由SSDT索引号获取当前函数地址 C、如何获取索引号 D、获取起源地址-判断SSDT是否被HOOK E、如何向内核地址写入自己代码 A、了解SSDT结构SSDT的全称是System Services Descriptor Table,系统服务描述符表 在ntoskrnl....原创 2018-09-16 09:53:11 · 15305 阅读 · 0 评论 -
读出SSDT表当前函数地址
A、引用KeServiceDescriptorTable表 B、通过ServiceTableBase+偏移读出当前函数地址 C、用windbg测试读取的值系统服务描述符表 在ntoskrnl.exe导出KeServiceDescriptorTable 这个表typedef struct _ServiceDescriptorTable {...原创 2018-09-16 10:13:26 · 701 阅读 · 0 评论 -
绕过SSDT驱动保护
A、去掉页面保护 B、写入In Line HOOK代码 C、用OD附加测试效果 D、反HOOK代码cr0,32位寄存器 MDL17位CW,1开启页面保护 置0 去掉页面 not (1 shl 16)= 0FFFEFFFFh10000000000000000#pragma pack(1)#pragma pack()...原创 2018-09-16 21:12:50 · 1399 阅读 · 0 评论 -
NT式驱动的安装卸载
A、OpenSCManager B、CreateService C、OpenService D、StartService E、CloseServiceHandle F、集成到loadNTDriver函数 #include <winsvc.h>正常加载驱动的步骤如下: 1、调用OpenSCManage...原创 2018-09-16 21:32:53 · 931 阅读 · 0 评论 -
手动加载NT式驱动
A、观察注册表 B、手动运行驱动 C、手动停止驱动运行 regedit.exeHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesImagePath \??\G:\驱动教程\018_读出SSDT表当前函数地址\mini_ddk\sys\i386\DDKHelloWorld.sys"DisplayName"="DDKH...原创 2018-09-17 21:13:26 · 572 阅读 · 0 评论 -
应用程序与驱动交互访问(缓冲模式)
数据交换原理 A、用户层传入数据 B、驱动层接收数据 C、驱动层回传数据级用户层 A、用户层传入数据EXE WriteFile,ReadFileBOOL DeviceIoControl(HANDLE hDevice, // 设备句柄 调用CreateFile获取 DWORD dwIoControlCode, // 操...原创 2018-09-17 21:51:01 · 307 阅读 · 0 评论 -
实战EXE和SYS通信
A、用户层传入数据-EXE部分代码 B、驱动层接收数据并处理-SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果A、用户层传入数据EXE部分代码//#include <winioctl.h>#define add_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY...原创 2018-09-17 22:19:02 · 420 阅读 · 0 评论 -
应用程序与驱动交互访问(直接模式)
A、用户层传入数据EXE部分代码 B、驱动层接收数据并处理SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果 E、预编译指令#pragma #ifndef #endif #define add_code CTL_CODE( FILE_DEVICE_UNKNOWN, ...原创 2018-09-18 22:07:46 · 1054 阅读 · 0 评论 -
应用程序与驱动交互访问(其它模式)
A、用户层传入数据EXE部分代码 B、驱动层接收数据并处理SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果 E、驱动中的异常处理 A、用户层传入数据EXE部分代码修改头文件METHOD_NEITHER#define add_code CTL_CODE( FILE_DEVICE_UNKNOWN, ...原创 2018-09-19 21:09:01 · 466 阅读 · 0 评论 -
SSDT HOOK驱动保护原理
A、初识内核进程相关结构 B、内核函数PsGetCurrentProcess C、进程保护原理 D、实例测试dd nt!KeServiceDescriptorTableNTSTATUS NtOpenProcess( __out PHANDLE ProcessHandle, __in ACCESS_MASK DesiredAccess, __i...原创 2018-09-19 21:35:59 · 1384 阅读 · 0 评论 -
IDT HOOK
A、实例演示 B、替换IDT处理函数 C、IDT HOOK 代码书写 //840dFaa1 //-----------全局变量--------------------------------ULONG int3proc_addr; //用来存放int 3处理函数地址ULONG jmpaddr_int3proc_9; //用来存放intproc+9处理...原创 2018-10-08 19:30:10 · 628 阅读 · 1 评论