Windows驱动
文章平均质量分 51
hbprotoss
只要是人都是依靠自己的知识和认知并且也被其束缚着生活的,那叫做现实。但知识和认知是暖昧不清的东西,现实也许只是镜花水月,人都是活在自己的执念中的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
成功实现通过SSDT HOOK拒绝指定文件的访问
菜鸟习作,老鸟勿笑~~ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 经历两天终于把这个搞出来了,作为一个菜鸟还是有点成就感滴~~嘿嘿。下面记录一下实现过程中的各种问题,作为以后的参考。 一句话:内核如沼泽。 首先是原创 2011-05-23 21:26:00 · 1199 阅读 · 0 评论 -
笔记
1. I/O堆栈的主要目的是保存功能代码和I/O请求的参数 2. IoCopyCurrentIrpStackLocationToNext和IoSkipCurrentIrpStackLocation用法上的区别: A driver calls IoCopyCurrentIrpStackLocationToNext to copy the IRP parameters from its原创 2011-05-01 15:56:00 · 942 阅读 · 0 评论 -
关于Windows驱动层次结构的笔记
按《Windows驱动开发技术详解》里的描述,Windows驱动结构可以分为水平结构和垂直结构(应该是作者自己取得名字,WDK文档里貌似没有这个名字)。所谓水平结构是指:由同一个驱动对象生成的所有设备,这些设备就是个单链表,下一节点指针保存在NextDevice域里。所有发送到这些设备的IRP都有本驱动对象所定义的DispatchRoutine来处理,所以可以用来Attach到一个设备栈上来过原创 2011-04-21 20:02:00 · 1107 阅读 · 0 评论 -
内核 HOOK ZwMapViewOfSection
转自:http://lwglucky.blog.51cto.com/1228348/284829 有部分模块加载时会调用ZwMapViewOfSection,比如进程创建时映射N份DLL到自己的虚拟空间中去.我们替换SSDT中的这个函数,过滤出是加载Kernel32.转载 2011-10-06 19:37:06 · 3898 阅读 · 0 评论 -
Windows内核字符串相关函数
函数名含有Cb的是以字节数为单位,含有Cch的是以字符数为单位。 函数名 作用 取代原创 2011-05-09 18:32:00 · 3200 阅读 · 0 评论 -
Example I/O Request - The Details
Windows Driver Kit: Kernel-Mode Driver Architecture Example I/O Request – The Details The figure illustrating opening a file object shows an IRP with two I/O stack locations, but an IRP can have any number of I/O stack locations, depending on how many la转载 2011-04-26 20:17:00 · 904 阅读 · 0 评论 -
IO_STACK_LOCATION说明
<br />转自http://hi.baidu.com/pinemoon/blog/item/01fa8c19fbccb7f0af513398.html<br /> <br /> <br />来自《《Rootkits:Subverting the Windows Kernel》学习笔记---第六章》<br /><br />这一章讲的是驱动程序分层。分层?呵呵,没啥,就像网络协议一样,分为一层层。其实写过程序的人都会用过“分层”写程序,把一个程序分为一层一层地实现,这是一个相当简单的概念。<br />驱动与设转载 2011-04-24 16:29:00 · 1307 阅读 · 0 评论 -
windbg调试---基本命令
<br /><br />转自http://blog.youkuaiyun.com/purplethunder/archive/2008/03/24/2214866.aspx<br /> <br /> <br />d族命令:<br />显示变量的命令:<br />d<br />da-----ASCII characters.<br />Db----Byte values and ASCII characters.<br />dc-----Double-word values (4 bytes) and ASCII cha转载 2011-04-21 20:01:00 · 824 阅读 · 0 评论 -
hello driver
hello driver~~程序员你懂的。纪念一下第一个驱动诞生这个是正常的驱动,hello driver啦~~嘿嘿接下来就是一个除零异常:有趣~~翻开bug check,7F果然是除零异常,yoxi。实验过程中有一点不明白,为什么要加个管道来调试,没有别的方法吗?还有,内核级别中断的时候为什么CPU占用率很高?是由于虚拟机的缘故?不得而知,等待探索~~PS:首次在Windows下用命令行编译程序,微软的x86 Checked Build Environment批处理已经干完了大部分的事,只敲一个build原创 2011-04-21 19:57:00 · 784 阅读 · 0 评论 -
IRP概述
<br /><br />原文地址:http://hi.baidu.com/noah1618/blog/item/a946368215a0e6b86d8119fc.html<br /><br /><br />一、简述<br />任何内核模式程序在创建一个IRP时,都同时创建了一个与之关联的IO_STACK_LOCATION结构数组:数组中的每个堆栈单元都对应一个将处理该IRP的驱动程序,另外还有一个堆栈单元供IRP的创建者使用。堆栈单元中包含该IRP的类型代码和参数信息以及完成函数的地址。IRP的Curren转载 2011-04-21 20:01:00 · 767 阅读 · 0 评论 -
关于Windows内存结构方面做点笔记
<br /><br />老鸟勿笑<br />-------------------------------------------------------------------------------------------------------------------------------------------------<br />所有exe,dll都加在到用户分区,所有随Windows一起发布的dll都指定了不同的基地址,而且基本不会被加载到别处,所以能通过获取本地进程里系统dll的导出函数地原创 2011-04-21 19:56:00 · 612 阅读 · 0 评论 -
关于PE格式中的文件地址,虚拟地址,相对虚拟地址的理解
<br /><br />首先贴上定义<br />1.文件偏移地址 (File Offest)<br />数据在PE文件中的地址叫文件偏移地址,个人认为叫做文件地址更加准确.这是文件在磁盘上存放时相<br />对文件开头的偏移.<br /><br />2.装载地址 (Image Base)<br />PE装入内存时的基地址.默认情况下,EXE文件在内存中的基地址是0x00400000,DLL文件是0x10000000.<br /><br />这些位置可以通过修改编译选项更改.<br /><br />3.虚拟内原创 2011-04-21 19:53:00 · 2799 阅读 · 0 评论 -
关于驱动开发的编译、调试环境
<br /><br />很多书上都建议抛开VS平台,直接用普通文本编辑器和DDK的命令行工具进行编码、编译,但对我这种小菜鸟貌似没有VS这个IDE比较不习惯,毕竟VS结构成员自动弹出、自动纠错什么的功能还是蛮实用的,减少出错几率~~呵呵。所以网上找了一下,发现一个VS的扩展:Visual ddk。下面说一下配置驱动开发的编译、调试环境。<br /> <br />直接使用Visualddk+VS完成所有编译、调试工作的最好做如下调整:<br />先按官网上的步骤配置好默认的Visualddk,将Visuald原创 2011-04-21 19:58:00 · 1571 阅读 · 3 评论 -
汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊? [
整理自互联网eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。转载 2011-04-21 20:00:00 · 10409 阅读 · 2 评论 -
啧啧啧。。。加壳失败
<br /><br />#deifne 被改造的exe A.exe<br /> <br />看了一点关于PE结构的东西,弄清了PE的基本构造,想加个壳试试。先看了那本《Windows应用程序捆绑》里的例子,竟然要复制机器码,直接放弃。<br />自己有琢磨了一个思路,把入口地址改成dll的导出函数地址,再保存一下A.exe的入口地址,这样不就可以了吗?接着动手试了试,翻了较多资料,开了3个project,兴冲冲的改造了一下A.exe,打开一看:“不是有效的win32应用程序”。我汗……NT头改坏了。原因嘛~原创 2011-04-21 19:55:00 · 1079 阅读 · 0 评论 -
关于监控文件系统上的IRP序列
最近在写一个基于生物免疫学原理的恶意代码检测系统,其中需要应用程序在Windows内核中产生的IRP序列。本文总结一下怎么获得文件系统上的IRP序列。希望对需要ring0主动向ring3频繁通信的朋友有点帮助基本框架是Minifilter。向minifilter注册回调函数来监控走过文件系统设备上的IRP。Minifilter框架详见微软WDK文档:http://msdn.micr原创 2012-03-03 16:22:29 · 3906 阅读 · 0 评论
分享