麦洛克菲内核驱动开发第一课.ppt
《麦洛克菲内核驱动开发第一课.ppt》由会员分享,可在线阅读,更多相关《麦洛克菲内核驱动开发第一课.ppt(34页珍藏版)》请在三一文库上搜索。
1、2012-03-03,麦洛克菲内核开发第一课,麦洛克菲 ,周扬荣,上课整体安排,周六,周日下午1点到6点 地点:清华园宾馆旁边 周三,周四晚上8点到10点辅导 地点:回龙观地铁对面首开智慧社4楼1单元1204 时间:3月3日到7月1日(中间清明和五一正常放假) 手机调为震动 交作业时间:每周五晚上 意见反馈 学员群:183948142 邮箱:,麦洛克菲,提纲,测试试题串讲 Hello world编译与运行 驱动框架 驱动是如何运行的 驱动服务安装 RING3与RING0通信 RING3与RING0开发区别 驱动API分类集合 常见的驱动漏洞、缺陷问题的7大忠告 调试(蓝屏DUMP分析,ring
2、3与ring0联调) 第一个驱动例子:进程创建监视,测试与基础,打印格式 %c %wc%C %d%ld %i64d%D%L %s %ws%S %u%x%p %f %Z%wZ 数据对齐 系统内存布局 程序内存布局 位运算(数的表示与存储 补码/低位优先) C语言:0x/0 u/l/ul/i64/ll/LL 汇编:1aH/17O/12D/110B 函数形参参数 内存分配/堆/栈 调用约定与栈帧、FPO优化 (stdcall, cdecl, fastcall, thiscall,nakedcall) 算法(确定原型,输入检查(严进宽出),边界考虑,出错处理,性能优化),麦洛克菲,麦洛克菲,努力方向,
3、C语言(数据结构,操作系统,汇编,编译原理) UI界面(MFC/WTL) 内核 调试(WINDBG)(F1HELP文档) 逆向(IDA/OLLYDBG),麦洛克菲,基础书籍推荐,C程序设计 谭浩强 清华大学出版社 C语言入门经典英文版 C语言编程精粹 姜静波等译 电子工业 高质量C+/C编程指南 林锐 电子工业 Effective C+侯捷译 华中科技大学出版社 More Effective C+侯捷译 中国电力出版社 程序员求职成功路 周扬荣 机械工业出版社 汇编语言 王爽 清华大学出版社 VC技术内幕 深入浅出MFC,麦洛克菲,内核书籍推荐,Windows 2000设备驱动程序设计指南 A
4、rt Baker等著 施诺译 机械工业出版社 寒江独钓:Windows内核安全编程 邵坚磊等著 电子工业出版社 天书夜读:从汇编语言到Windows内核编程邵坚磊等著 电子工业 Windows驱动开发技术详解 张帆 电子工业出版社 Rootkits: Subverting the Windows Kernel Greg Hoglund等著 C:WinDDK7600.16385.0src http:/ http:/ http:/ http:/ MSDN,麦洛克菲,Hello world,.c/.h SOURCES/MAKEFILE .DSP/.DSW EASYSYS/既有框架 安装与运行 虚拟
5、机调试环境搭建,Sources文件: TARGETNAME=HelloDrv(DrvName) TARGETPATH=debug TARGETTYPE=DRIVER SOURCES=main.c other.c Sources文件其它字段: C_DEFINES=$(C_DEFINES) DYOUR_DEFINES INCLUDES=$(INCLUDES);inc TARGETLIBS=$(TARGETLIBS) $(DDK_LIB_PATH)ndis.lib PRECOMPILED_INCLUDE=precomp.h DRIVERTYPE=FS makefile文件: !INCLUDE $(N
6、TMAKEENV)makefile.def,虚拟机设置,创建一个com1串口 XP BOOT.ini(com1可能为com2,取决于vmware这端的ID) multi(0)disk(0)rdisk(0)partition(1)WINDOWS=“Microsoft Windows XP Professional -debug“ /debug /debugport=com1 /baudrate=115200 /fastdetect WIN7 bcdedit /dbgsettings serial baudrate:115200 debugport:1 bcdedit /copy current
7、/d DebugEntry bcdedit /displayorder current d3d5f290-f64b-11de-a86d-aba3805c5629 bcdedit /debug d3d5f290-f64b-11de-a86d-aba3805c5629 ON windbg.exe -k com:port=.pipecom_1,baud=115200,pipe 符号设置: srv*d:symbols*http:/ Vista上DbgPrint启用 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerDebug
8、Print Filter “DEFAULT” : REG_DWORD : 0xFFFFFFFF,麦洛克菲,驱动框架(1),HOOK函数,驱动框架(2),麦洛克菲,NT模型 DriverEntry()(单线程环境) DispatchCreate()IRP_MJ_CREATE DispatchRead()IRP_MJ_READ DispatchWrite()IRP_MJ_WRITE DispatchClose()IRP_MJ_CLOSE(FileObject引用为0) DispatchClean()IRP_MJ_CLEANUP(Handle引用为0) DispatchControl()IRP_MJ
9、_DEVICE_CONTROL DriverUnload()(单线程环境) WDM WDMAddDevice() WDMPnp() 应用框架 Sfilter/Minifilter TDI/NDIS/WFP DISKPERF HOOK,写一个NTModelDrv,结构定义 卸载例程 分发函数(通用的,单独的) DriverEntry 编译 运行,麦洛克菲,麦洛克菲,IRP结构理解与操作(1),文件过滤驱动设备,文件卷设备,磁盘设备,IRP,驱动设备,IRP,麦洛克菲,IRP结构理解与操作(2),Irp-AssociatedIrp.SystemBuffer Irp-IoStatus.Status
10、Irp-IoStatus.Information Irp-UserBuffer Irp-MdlAddress PIO_STACK_LOCATION irpStack; irpStack = IoGetCurrentIrpStackLocation (Irp); irpStack-Parameters.Read.Length irpStack-Parameters.Read.ByteOffset irpStack-Parameters.DeviceIoControl.IoControlCode irpStack-Parameters.DeviceIoControl.InputBufferLeng
11、th irpStack-Parameters.DeviceIoControl.OutputBufferLength irpStack-MajorFunction irpStack-MinorFunction irpStack-DeviceObject irpStack-FileObject,麦洛克菲,驱动是如何运行的,A驱动: 1创建一个服务(注册表) HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSrvName 启动GROUP与StartType决定了驱动加载的早晚 StartType为0的比StartType为1的先启动。 同一个Star
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 洛克 内核 驱动 开发 第一
链接地址:https://www.31doc.com/p-3379206.html