内核驱动编程学习
文章平均质量分 75
piaojieChen
这个作者很懒,什么都没留下…
展开
-
内核编程学习笔记(001)
<br /><br />1. WDK windows Driver Kit 下载并安装在本机上,安装路径要避免有空格,最新版本还会集成了WinDbg,很方便<br /> <br /> <br />2. 然后编写第一个工程<br /> <br />******驱动主程序myfirst.c<br /> <br /> <br />#include <ntddk.h><br /> <br /> <br />//卸载函数<br /> <br />VOID DriverUnload(PDRIVER_OBJECT dri原创 2011-02-26 22:43:00 · 792 阅读 · 0 评论 -
NT驱动开发学习笔记004
题外话:“我什么时候能长胖一点?”午觉刚醒,我看着自己竹竿似的手臂轻笑道。今天下午还是悠闲点,了解一下一些windos系统内核驱动的概念吧,操作固然重要,概念真的是不能少的。NT驱动开发学习笔记四2011.05.06基本概念:Windows两个模式:内核模式(Kernel Mode)和用户模式(User Mode)。对比起Linux系统的单一内核,这样Linux的速度就会很快,可是单一内核的耦合性太高了。CPU的4个特权层(i386):分别是Ring0 到 Ring3,其中Ring0最高,Ring3最低。W原创 2011-05-06 18:10:00 · 574 阅读 · 0 评论 -
NT驱动开发学习笔记003
<br /><br /> <br />题外话:<br />坚持写笔记,慢慢形成习惯,劳逸结合,Go,Go,Go。<br /><br /><br />NT驱动开发学习笔记三2011.05.05<br /><br /><br />NT驱动的卸载例程DriverUnload:<br />A driver's Unload routine, if supplied, should be named XxxUnload, where Xxx is a driver-specific prefix. The drive原创 2011-05-05 21:25:00 · 680 阅读 · 0 评论 -
NT驱动开发学习笔记001
<br /><br /> <br />题外话:<br />关于之前写的《内核编程学习笔记1-5》,那只是为了做某游戏的双开驱动而做的学习,所以比较肤浅(连NT式驱动和WDM式驱动都分不不清)。这次是一个系统的学习,会结合操作系统的知识来学习,是一个系统的学习过程,所以要重新写的学习笔记。加油吧~<br /><br /><br /><br />NT驱动开发学习笔记一2011.05.04<br /><br /><br />关于头文件:<br />①#pragma once//表示这个头文件只会被包含一次,可以防原创 2011-05-04 23:43:00 · 2530 阅读 · 0 评论 -
NT驱动开发学习笔记002
题外话:今天继续坚持写笔记,原来例程的意思就是没有返回值的函数啊,呵呵。NT驱动开发学习笔记二2011.05.05NT驱动的入口函数DriverEntry:NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, //驱动对象指针IN PUNICODE_STRING pRegistryPath) //设备服务在注册表中键名的字符串(全路径)本函数主要是要对驱动程序初始化工作,由系统进程调用,系统进程就是任务管理器看到的一个名为System的进程。在驱动加原创 2011-05-05 08:24:00 · 705 阅读 · 0 评论 -
内核编程学习笔记(005) “天空很蓝”的5个教训
<br /><br />某游戏的双开驱动虽然说是简单,本人在做这个工具的时候,蓝屏死机了n次,为了自己的电脑着想,特此把经验给记录下来。<br /><br />①寄存器没有平衡或平衡写错,低级错误打自己嘴巴。<br /><br />②页面保护欺骗逻辑与运算写错,低级错误。<br />and eax,not 00010000h<br />or eax,00010000h<br /><br />③对于SSDT里的Nt函数 整个操作系统都随时有可能会调用到,并不是只有自己心目中某程序想的时候才会用,就像NtCre原创 2011-04-23 07:40:00 · 2711 阅读 · 0 评论 -
内核编程学习笔记(004) 对某某游戏的驱动双开的分析及其学习
<br /><br />目前网络游戏,由于外(和谐)挂盛行,在游戏中加了很多很多的防护校验,我们耳熟能详的有TP,NP,HS,xtrap,apex等,在游戏加载前都可以看到它们的身影。<br /><br /><br /><br />作为一个初学内核驱动的菜鸟,看着高手们辗压各种驱动保护,心里真的是羡慕妒嫉恨啊。不过,现在还是要打好基础为最重要。先还是实现一个简单的驱动双开吧~<br /><br /><br /><br />某游戏要实现双开,说难不难,说容易不容易,主要是有一条技术分界线,那就是ring0级的原创 2011-04-23 07:38:00 · 3092 阅读 · 0 评论 -
内核编程学习笔记(002) 利用API函数加载系统服务以加载驱动
<br /><br />利用API函数加载系统服务以加载驱动<br /><br />基础知识:<br />一个服务由三部分组成,第一部分是Service Control Manager(SCM)。每个Windows NT/2000系统都有一个SCM,SCM存在于Service.exe中,在Windows启动的时候会自动运行,伴随着操作系统的启动和关闭而产生和终止。这个进程以系统特权运行,并且提供一个统一的、安全的手段去控制服务。它其实是一个RPC Server,因此我们可以远程安装和管理服务,不过这不在本文原创 2011-02-27 09:58:00 · 1958 阅读 · 0 评论 -
NT驱动开发学习笔记005
<br /><br /> <br />题外话:<br />日日都睡午觉,睡午觉上瘾了,呵呵,希望自己能一直这样,做一个能睡午觉的程序员。<br /><br /><br />NT驱动开发学习笔记五2011.05.07<br />IO设备控制操作:<br />应用程序与驱动程序互交:正常来说,应用程序和驱动程序不是运行在同在同一个层上的,所以不能相互通讯。windows提供了ReadFile 、 WriteFile 和 DeviceIoControl等API,能让应用程序向底层发送IRP,达到和驱动程序互交的目原创 2011-05-07 17:40:00 · 799 阅读 · 0 评论