Windows内核安全编程实践之路 安于此生@看雪学院.

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
职业指导服务系统 欢迎了解职业指导服务系统!
提高自身素质做好 新时期班主任工作 北京市广渠门中学 高金英.
普通话模拟测试 与学习平台 使用指南.
第二章 项目一:企业厂区与车间平面设计 1.
網路小說劇情建構與伏線營造 Windows98.
关于整合检验检测认证机构实施意见的通知(国办发〔2014〕8号)
Oracle数据库 Oracle 子程序.
推进德育创新 做好新时期班主任工作 北京市广渠门中学 高金英.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
Android快速开发入门 巫文杰、Android工程师 讲师的CSDN博客地址
Hadoop I/O By ShiChaojie.
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
学习前的准备工作 讲师:burning.
大学计算机基础 典型案例之一 构建FPT服务器.
走进编程 程序的顺序结构(二).
辅导课程六.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第10章 IA-32微机的系统编程技术.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
S 数控机床故障诊断与维修.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
如何生成设备节点 广州创龙电子科技有限公司
China’s Software Industry August 2006 Instructor: Hengming Zou, Ph.D.
Windows 7 的系统设置.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
从zval看PHP变量
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
$9 泛型基础.
小学生交通安全主题班会课件 安全 security 上派学区中心校校园安全管理办公室.
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
第二章 Java基本语法 讲师:复凡.
实验七 安全FTP服务器实验 2019/4/28.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Windows内核安全编程实践之路
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
<编程达人入门课程> 本节内容 学习路线 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 结构体.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 如何调试驱动程序? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
本节内容 this指针 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

Windows内核安全编程实践之路 安于此生@看雪学院

自我介绍 安于此生@ExpLife,现任高级逆向工程师。 主要从事windows驱动开发及逆向方面的工作,擅长C/C++,ASM, 软件调试逆向,恶意代码分析与对抗。 主页:https://github.com/ExpLife0011 https://github.com/ExpLife0011/awesome-windows-kernel-security-development

UNREFERENCED_PARAMETER宏的运用 初识UNICODE_STRING结构 探究驱动程序入口函数的两个参数 本课内容 UNREFERENCED_PARAMETER宏的运用 初识UNICODE_STRING结构 探究驱动程序入口函数的两个参数

在编写驱动的时候,如果有函数的参数在函数体内未引用, 并且将警告视为错误的编译选项启用了的话,这时驱动程序 UNREFERENCED_PARAMETER宏的运用 在编写驱动的时候,如果有函数的参数在函数体内未引用, 并且将警告视为错误的编译选项启用了的话,这时驱动程序 编译会报错,并提示程序中存在未引用的变量.这个时候我 们只需要使用UNREFERENCED_PARAMETER来描述未引 用到的参数就可以消除该警告

初识UNICODE_STRING结构 typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; Length:存储在缓冲区中的字符串所占的字节数 MaxinumLength:缓冲区能够容纳的字节数 Buffer:指向了用于包含一个宽字符字符串的缓冲区

探究驱动程序入口函数的两个参数 入口函数的第一个参数PDRIVER_OBJECT DriverObject typedef struct _DRIVER_OBJECT { CSHORT Type; //驱动程序的类型 CSHORT Size; //驱动对象结构体的大小 PDEVICE_OBJECT DeviceObject; //指向驱动程序创建的设备对象,这些设备对象构成一个链表 ULONG Flags; //驱动程序标志 PVOID DriverStart; //驱动程序映像的起始地址 ULONG DriverSize; //驱动程序映像的大小 PVOID DriverSection; //指向驱动程序映像的内存区对象,可以通过该成员遍历系统中所有的驱动模块 PDRIVER_EXTENSION DriverExtension; //指向驱动程序对象的扩展结构 UNICODE_STRING DriverName; //驱动的名称 PUNICODE_STRING HardwareDatabase; //设备的硬件数据库名,一般为HKEY_LOCAL_MACHINE\Hardware\DESCRIPTION\System PFAST_IO_DISPATCH FastIoDispatch; //指向文件系统以及网络传输驱动会用到的派遣函数的指针表 PDRIVER_INITIALIZE DriverInit; //指向DriverEntry函数,这是IO管理器设置的 PDRIVER_STARTIO DriverStartIo; //记录StartIO例程的函数地址,用于串行化操作. PDRIVER_UNLOAD DriverUnload; //指向驱动卸载时所用的回调函数地址 PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; //指向驱动程序的派遣函数地址表 } DRIVER_OBJECT,*PDRIVER_OBJECT;

探究驱动程序入口函数的两个参数 入口函数的第二个参数PUNICODE_STRING RegistryPath 指向代表该驱动程序注册表键路径的UNICODE_STRING结构