随笔分类 -  郁金香Driver

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