郁金香驱动编程+驱动逆向+驱动保护教程

一、基础篇--简单驱动模型

1.1DDK及VC6.0/7.0/9.0的安装

1.1.1安装VC++6.0-1课

1.1.2安装VS2003-VC++7.0-2课

1.1.2安装VS2008-VC++9.0-3课

1.1.3安装VC助手-4课

1.1.5安装DDK-5课

1.2驱动开发VC环境安装配置

1.2.1VC6环境编译驱动-6课

A、VC6驱动编译配置

B、VC6集成环境下编译驱动

1.2.2VS2003环境编译驱动-7课

A、VC7驱动编译配置

B、VC7集成环境下编译驱动

1.2.3VS2008环境编译驱动-8课

A、VC9驱动编译配置

B、VC9集成环境下编译驱动

1.3NT式驱动

1.3.1编写一个名为DDK_HelloWorld简单的驱动-9课

A、VC6集成环境下书写代码

驱动入口函数DriverEntry

入口函数参数DriverObject和RegistryPath

B、书写SOURCES文件

C、书写makefile文件

D、用DDK-Build环境编译

1.3.2为DDK_HelloWorld添加卸载例程-10课

A、输出调试信息-KdPrint

B、认识PDRIVER_OBJECT结构

C、注册驱动卸载例程

D、卸载例程回调函数构建

E、查看驱动调试信息

1.3.3用工具过驱动保护(确定学习方向)-11课

A、用户层至内核的隐秘通道

B、浅谈过保护原理

C、实战过XX游戏驱动保护,让OD,CE正常附加调试

D、小结

1.3.4为DDK_HelloWorld添加设备例程-12课

A、相关内核API介绍

B、重要数据结构驱动对象DRIVER_OBJECT

C、重要数据结构设备对象DEVICE_OBJECT

D、添加创建设备的例程

E、用工具查看驱动及驱动设备

1.3.5VM+windbg安装13课

A、安装VM虚拟机

B、在VM里安装操作系统

C、安装windbg

D、windbg和VM的相关配置

E、启用windbg双机调试

1.3.6实战用windbg调试自己驱动DDK_HelloWorld-14课

A、用户层调试和内核调试区别

B、如何下断跟踪

C、F10步过和F11步进

D、查看寄存器相关信息

E、源代码调试与机器码调试

1.3.7DDK_HelloWorld卸载例程细化-15课

A、再看DEVICE_OBJECT结构

B、删除符号链接

C、删除设备

D、测试卸载例程

1.3.8为DDK_HelloWorld添加默认派遣例程-16课

A、初识IRP

B、一个简单的IRP处理函数

C、IRP.IoStatus结构

D、IoCompleteRequest函数

1.4编写自己的驱动过游戏保护(以11课分析为例)

1.4.1需要具备的理论知识-17课

A、了解SSDT结构

B、由SSDT索引号获取当前函数地址

C、如何获取索引号

D、获取起源地址-判断SSDT是否被HOOK

E、如何向内核地址写入自己代码

1.4.2读出SSDT表当前函数地址-18课

A、引用KeServiceDescriptorTable表

B、通过ServiceTableBase+偏移读出当前函数地址

C、用windbg测试读取的值

1.4.3读出原函数地址-19课

A、集成上一课代码至GetNt_CurAddr函数

B、MmGetSystemRoutineAddress

C、书写GetNt_OldAddr函数

D、测试结果

1.4.4JMP地址转换公式推导-20课

A、JMP地址转换公式推导

B、计算实际地址函数RealJmp_Addr

C、测试

1.5绕过SSDT驱动保护-21课

A、去掉页面保护

B、写入InLineHOOK代码

C、用OD附加测试效果

D、反HOOK代码

1.6NT式驱动的安装-22课

A、OpenSCManager

B、CreateService

C、OpenService

D、StartService

E、CloseServiceHandle

F、集成到loadNTDriver函数

1.7NT式驱动的卸载-23课

A、卸载驱动流程

B、内核函数DeleteService

C、内核函数ControlService

D、构建UnLoadSys函数

E、测试并查看调试信息

1.8驱动代码中C和C++代码区别-24课

A、函数调用约定

B、C和C++编译方式

C、用C++方式编译驱动

D、C代码升级至C++

E、优化21课的代码

1.9、再谈VC环境配置-25课

A、编译选项C/C++ProjectOption

B、链接选项LinkProjectOption

C、测试所编译驱动

二、中级篇

2.1、手动加载NT式驱动(非工具)-26课

A、注册表

B、手动运行驱动

C、手动停止驱动

2.2、应用程序与驱动交互访问(缓冲模式)

2.2.1、数据交换原理-27课

A、用户层传入数据

B、驱动层接收数据

C、驱动层回传数据级用户层

2.2.2、实战EXE和SYS通信-28课

A、用户层传入数据EXE部分代码

B、驱动层接收数据并处理SYS部分代码

C、驱动层返回数据至用户层

D、用户层获得处理结果

2.3、应用程序与驱动交互访问(直接模式)-29课

A、用户层传入数据EXE部分代码

B、驱动层接收数据并处理SYS部分代码

C、驱动层返回数据至用户层

D、用户层获得处理结果

E、预编译指令#pragma#ifndef#endif

2.4、应用程序与驱动交互访问(其它模式)-30课

A、用户层传入数据EXE部分代码

B、驱动层接收数据并处理SYS部分代码

C、驱动层返回数据至用户层

D、用户层获得处理结果

E、驱动中的异常处理

2.5、再谈SSDTHOOK驱动保护原理-31课

A、初识内核进程相关结构

B、内核函数PsGetCurrentProcess

C、进程保护原理

D、实例测试

2.6、自写驱动保护XX进程-32课

A、HOOKSSDT

B、构建自己的内核函数

C、构建Hook和UnHook函数

D、修改EXE和SYS对应源代码(实现所谓保护)

E、测试效果

2.7、驱动中的内存管理-33课

A、物理内存

B、虚拟内存

C、Ring0地址和Ring3地址

D、驱动程序和进程的关系

E、分页和非分页内存

F、分配内核内存

2.8、内存管理相关内核API-34课

A、RtlCopyMemory,RtlCopyBytes和RtlMoveMemory

C、RtlZeroMemory和RtlFillMemory

D、RtlEqualMemory

E、ExAllocatePool和ExFreePool

F、重载new和delete操作符

2.9.1在认识链表结构exe部分-35课

A、链表结构

B、链表的初始化

C、在链表中插入数据(结点)

D、链表的遍历

2.9.2在驱动中使用链表sys部分-36课

A、链表结构

B、链表的初始化

C、在链表中插入数据(结点)

D、链表数据的删除

E、链表的遍历

2.A.1驱动下的异常处理-37课

A、返回状态值

B、检查内存的可用性

C、异常处理try-except

D、异常处理try-finally

E、断言

2.A.2内核模式下的字串操作-38课

A、ASCII字符串和UNICODE字符串

B、ANSI_STRING字符串和UNICODE_STRING字符串

C、字符串的初始化与销毁

D、字符串**,比较,(大小写,整数和字串)相互转换

E、ANSI_STRING字符串和UNICODE_STRING字符串相互转换

2.A.3内核模式下的文件操作-39课

A、文件的创建

B、文件的打开

C、获取和修改文件属性

D、写文件和读文件

三、进阶篇(进程保护,RootKit)

3.1应用层勾子

3.1.1IAT表-40课

A、初识IAT

B、IAT表相关结构

C、读出IAT项

D、编写代码测试分析

E、HOOKIAT

F、测试分析

3.1.2应用层勾子InLineHOOK-41课

A、InLineHOOK原理分析

B、InLineHOOK代码编写

C、InLineHOOK代码测试

3.2内核勾子

3.2.2ShadowSSDT-42课

A、ShadowSSDT表基址

B、ShadowSSDT表结构

C、ShadowSSDTHOOK

3.2.3绕过所有用户层HOOK-43课

A、分析API函数原理

B、自写API函数

C、SYSENTER指令

D、硬编码_emit

E、模拟FindWindow函数

3.2.4驱动InLineHOOK实例-44课

A、分析等HOOK函数参数

B、选取HOOK地址

C、构建HOOK代码

D、实现HOOK

E、测试效果

3.2.5认识IDT表-45课

A、反断点的一些原理

B、认识IDT表

C、IDT表相关结构

D、读出IDT表-sidt指令

E、测试

3.2.6IDTHOOK-46课

A、实例演示

B、替换IDT处理函数

D、IDTHOOK代码书写

D、测试效果

四、高级篇--驱动逆向(实例分析)

4.1XX游戏驱动保护分析(实例A)

4.1.1、XX游戏驱动保护分析(实例A)-47课

A、保护情况分析

B、猜测相关原理

C、过保护让CE能查找到数据的相关分析

D、过保护让CE能修改数据的相关分析

4.1.2、XX游戏过保护分析(实例B)-48课

A、分析游戏进程保护

B、分析游戏数据读取保护

C、分析游戏数据写入保护

4.2、XX游戏驱动保护代码书写

4.2.1XX游戏驱动保护代码书写-49课

A、定位特征码函数FindCode_Address构建

B、定位NtOpenThread

C、定位NtOpenProcess

D、定位NtReadVirtualMemory

E、定位NtWriteVirtualMemory

F、CALL与JMP指令的区别

G、构建相应的替换函数

4.2.2XX游戏驱动保护代码书写-50课

A、恢复NtOpenThread

B、恢复NtOpenProcess函数

C、恢复NtReadVirtualMemory让CE可读

D、恢复NtWriteVirtualMemory让CE可写

E、Ret指令详解

F、Hook代码编写并测试

五、附加课程(不会实时更新)

5.1过XX游戏保护实例

A、1394hub保护(游戏A)

B、necheck保护(游戏B)



C,C++游戏编程快速入门系列教程
附件
1453_pan
****(需购买后查看)
前往下载
附件购买
售价:13 积分
开通终身全站通或更高级的会员可免费下载该文件

登录注册购买

未经允许不得转载! 作者:admin,转载或复制请以超链接形式并注明出处搜库资源网

原文地址:https://sokuziyuan.com/ruanjianbiancheng/1453.html发布于:2019-01-25

您需要 登录账户 后才能发表评论

发表评论

快捷回复: 表情:
评论列表 (暂无评论,455人围观)

还没有评论,来说两句吧...