随笔分类 - 郁金香Driver
摘要:1、 内核模式下的字串操作 A、ASCII字符串和UNICODE字符串 B、ANSI_STRING字符串和UNICODE_STRING字符串 C、字符串的初始化与销毁 D、字符串复制,比较,(大小写,整数和字串)相互转换 E、ANSI_STRING字符串和UNICODE_STRING字符串相互转换
阅读全文
摘要:1、 驱动下的异常处理 返回状态值 检查内存的可用性 异常处理try-except 异常处理try-finally 断言 【01:52】打开vs2003,更进一步的来了解 NTSTATUS 【02:12】选 第36课 的代码为例 【02:40】看的是 DDK里面的 ntdef.h中的定义 【03:2
阅读全文
摘要:1、 在驱动中使用链表sys部分 A、链表结构 B、链表的初始化 C、在链表中插入数据(结点) D、链表数据的删除 E、链表的遍历 【70】这里讲的链表,同样是 上节课讲的那种双向链表 【90】以 第35课 的代码为例来讲解。第35课里面没有 驱动部分,先复制linktype.h,复制 第34课 的
阅读全文
摘要:1、 在认识链表结构exe部分 A、链表结构 B、链表的初始化 C、在链表中插入数据(结点) D、链表的遍历 【100】 “ 链表: 链表有单向链表,也有双向链表,有循环的(环形),在这里我们只讨论 双向循环链表。 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和
阅读全文
摘要:1、 内存管理相关内核API A、RtlCopyMemory,RtlCopyBytes和RtlMoveMemory C、RtlZeroMemory和RtlFillMemory D、RtlEqualMemory E、ExAllocatePool和 ExFreePool F、重载new和delete操作
阅读全文
摘要:1、 驱动中的内存管理 A、 物理内存 B、 虚拟内存 C、 Ring0地址和Ring3地址 D、 驱动程序和进程的关系 E、 分页和非分页内存 F、 分配内核内存 【120】了解两个概念:物理内存 虚拟内存 【140】以下概念针对 32位Windows操作系统(32位及以上的CPU)(32位 /
阅读全文
摘要:1、 自写驱动保护XX进程(HOOK SSDT) A、构建自己的内核函数(用来替换对应的内核函数) C、Hook和UnHook函数构建 D、修改EXE和SYS对应源代码实现所谓保护 E、测试效果 【135】以28课的代码为例 新建一个hook.h单元 【200】实际上选用 第29/30课 的代码也是
阅读全文
摘要:1、 再谈SSDT HOOK驱动保护原理 A、初识内核进程相关结构 B、内核函数PsGetCurrentProcess C、进程保护原理 D、实例测试 【100】本节课先讲理论,下节课具体代码 【160】看一个实例(代码已经写好了) 将 mini_ddk.sys 和 test_exe.exe 复制到
阅读全文
摘要:1、 应用程序与驱动交互访问(其它模式) A、用户层传入数据EXE部分代码 B、驱动层接收数据并处理SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果 E、驱动中的异常处理 【225】 “ A、用户层传入数据EXE部分代码修改头文件METHOD_NEITHER #define add
阅读全文
摘要:1、 应用程序与驱动交互访问(直接模式) A、用户层传入数据EXE部分代码 B、驱动层接收数据并处理SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果 E、预编译指令#pragma #ifndef #endif ZC: 上节课 最后说 蓝屏的问题,这节课【3725】处 【190】都是
阅读全文
摘要:1、 实战EXE和SYS通信 A、用户层传入数据-EXE部分代码 B、驱动层接收数据并处理-SYS部分代码 C、驱动层返回数据至用户层 D、用户层获得处理结果 【190】假设驱动部分已经按照我们的思路写好了 【305】创建 VC6 Win32ConsoleApplication 名称为:"test_
阅读全文
摘要:1、 应用程序与驱动交互访问(缓冲模式) 数据交换原理 A、用户层传入数据 B、驱动层接收数据 C、驱动层回传数据级用户层 【250】A、用户层传入数据EXE WriteFile,ReadFile 【350】 BOOL DeviceIoControl( HANDLE hDevice, // 设备句柄
阅读全文
摘要:1、 手动加载NT式驱动(非工具) A、观察注册表 B、手动运行驱动 C、手动停止驱动 【100】regedit 【145】文件--> 导出(F)... 可以看到 子键的路径为:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services” 【170】这
阅读全文
摘要:1、 再谈VC环境配置 A、编译选项C/C++ Project Option B、链接选项Link Project Option C、测试所编译驱动 【130】复制 第24课 的代码 【170】用 vs2003编译生成驱动,复制到 虚拟机中。 【185】载入驱动 测试一下 【210】"GO"驱动的时
阅读全文
摘要:1、 驱动代码中C和C++代码区别 A、函数调用约定 B、C和C++编译方式 C、用C++方式编译驱动 D、C代码升级至C++ E、优化21课的代码 本课主要是做着两个工作:"D、C代码升级至C++"、"E、优化21课的代码" 【180】把 第21课 的代码复制过来 【275】一般是通过改后缀名 【
阅读全文
摘要:1、 NT式驱动的安装 A、卸载驱动流程 B、内核函数DeleteService C、内核函数ControlService D、构建UnLoadSys函数 E、测试并查看调试信息 【100】 一、卸载驱动流程 1、用OpenSCManager函数打开 服务控制管理器,取得SCM句柄,如果返回NULL
阅读全文
摘要:1、 NT式驱动的安装 A、OpenSCManager B、CreateService C、OpenService D、StartService E、CloseServiceHandle F、集成到loadNTDriver函数 【320】#include <winsvc.h> 【435】MSDN中的
阅读全文
摘要:1、 绕过SSDT驱动保护 A、去掉页面保护 B、写入In Line HOOK代码 C、用OD附加测试效果 D、反HOOK代码 【190】复制 第20课 的代码 【315】涉及到 页面的保护 ==> 涉及到 一个特殊的寄存器 cr0,32位寄存器 ==> 其中的第17位(从第0位开始) ==> CW
阅读全文
摘要:1、 向指定地址写入代码 A、JMP地址转换公式推导 B、计算实际地址函数RealJmp_Addr C、测试 【240】JMP指令 -> 机器码 --> 0xE9 【260】指令"JMP 88881234" --> 翻译成机器码 --> "E9 88881234" 【328】打开 OD 看一下,JM
阅读全文
摘要:1、 第19课、读出原函数地址- A、集成上一课代码至GetNt_CurAddr函数 B、MmGetSystemRoutineAddress C、书写GetNt_OldAddr函数 D、测试结果 【120】第18课的代码 【215】集成上一课代码至GetNt_CurAddr函数 ULONG GetN
阅读全文

浙公网安备 33010602011771号