上一页 1 2 3 4 5 6 7 8 ··· 14 下一页
摘要: 05内核编程用户层和内核层通讯内核通讯概述内核层有着非常高的权限, 可以得到很多信息, 也可以修改很多信息. 但是在内核层中无法创建界面, 无法便捷地输出信息. 因此, 这就需要携手用户层的程序来功能完成信息的获取与修改, 信息的展示. 内核层驱动主要负责在内核中获取信息, 而用户层程序负责发出指令, 让内核层获取/修改特定数据, 并将内核层驱动程序执行结果显示到界面.但是用户层程序是不能直接调用... 阅读全文
posted @ 2019-08-28 18:37 ltyandy 阅读(888) 评论(0) 推荐(1) 编辑
摘要: 驱动对象驱动程序:就是一个.sys模块, 驱动对象:则是.sys被加载到内核中的实例化出来的对象, 用于表示这个驱动模块.Windows内核使用DRIVER_OBJECT结构体来描述一个驱动对象.虽然Windows内核源码使用C语言编写, 但也使用了面向对象的思想. 在面向对象思想中, 有父类, 抽象类,纯虚函数的概念, 纯虚函数就是一个类中无须定义的虚函数. 拥有这个函数的类被称为抽象类, 继承... 阅读全文
posted @ 2019-08-28 18:21 ltyandy 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 第一个内核程序新建项目设置项目属性代码#include ​// 卸载VOID MyDriverUnload(PDRIVER_OBJECT driver){ // 避免编译器报未引用参数的报告 UNREFERENCED_PARAMETER(driver); // 打印 KdPrint(("Unload\n"));}​// 相当于mainNTSTATUS DriverEntry... 阅读全文
posted @ 2019-08-27 17:04 ltyandy 阅读(295) 评论(0) 推荐(1) 编辑
摘要: 环境安装 环境安装需要极其谨慎, 因为稍有不慎, 就需要重装系统. 驱动开发环境依赖WDK(Windows driver kit),也就是微软的驱动开发工具包. 这个工具包里面包含了驱动程序的编译工具 , 头文件, 库等. 缺了这个, 无法编译驱动程序. WDK有很多的版本, 版本的选择很重要. 一 阅读全文
posted @ 2019-08-27 15:05 ltyandy 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 调试寄存器 DRO~ DR7是调试寄存器. DRO ~ DR3 用于保存断点的线性地址. DR7 - 分别保存4个断点的中断条件. DR6 - 保存断点命中后的信息. 控制寄存器 CR0 包含处理器的大量控制标志位. 下面列出常用的三种: PE - 是否启用保护模式,置1则启用 PG - 是否使用分 阅读全文
posted @ 2019-08-27 14:59 ltyandy 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 1.双机调试下虚拟机打开test.exe文件int main(){ printf("%p" , "aaabbbccc");}exe打印的虚拟地址:00217B302.转二进制: 00000000 ‭00100001 01111011 00110000‬按10-10-12拆分:00000000‭00 1000010111 101100110000‬变成了:0-217-B303.kd> ! pr... 阅读全文
posted @ 2019-08-27 14:57 ltyandy 阅读(761) 评论(0) 推荐(0) 编辑
摘要: 概述每个进程都有0~4Gb的虚拟地址空间, 但是每个进程所使用的虚拟地址空间映射到的物理内存都是不一样的.意思就说是, 同样是虚拟地址0x401000 , 在不同的进程中能够访问出不同的数据来.这是因为Windows使用CPU的分页机制, 将一个进程的虚拟地址映射到了不同的物理地址上.分页机制当需要使用一个虚拟地址时, 就需要通过WindowsAPI先预定内存,然后再提交内存, 这样之后才能使用.... 阅读全文
posted @ 2019-08-27 14:53 ltyandy 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 壳2创建MFC-基于对话框项目。绘制界面图片插入,添加工具-picture control-属性属性-设置一键加壳按钮实现void CMFCShellDlg::OnBnClickedButton1(){ //设置过滤器 TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); // 构造打开文件对话框 CFile... 阅读全文
posted @ 2019-08-27 00:25 ltyandy 阅读(365) 评论(1) 推荐(0) 编辑
摘要: ​//通过调用门调用的 函数void _declspec(naked) GateFun(){ g_num = 100; _asm mov [ g_esp ] , esp; _asm mov ax , ss; _asm mov word ptr [g_ss],ax _asm retf;}​int main(){ //构造描述符,段选择子为8. unsign... 阅读全文
posted @ 2019-08-26 20:18 ltyandy 阅读(220) 评论(0) 推荐(1) 编辑
摘要: 段描述符数据段描述符代码段描述符系统段描述符 A - 访问 E - 向下扩展 AVL - 供程序员使用 G - 粒度 B - BIG P - 段是否有效 C - CONFORMING ... 阅读全文
posted @ 2019-08-26 20:16 ltyandy 阅读(275) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 14 下一页