02 2014 档案

摘要:1. 概述从 windows xp 和 windows 2003 开始使用了快速切入内核的方式提供系统服务例程的调用。KiFastCallEntry() 的实现是直接使用汇编语言,C 语言不能直接表达某些操作。我从 windows 2003 里反汇编出来,写成 C 伪码形式,点击这里察看:KiFas... 阅读全文
posted @ 2014-02-28 15:21 vcerror 阅读(932) 评论(0) 推荐(0)
摘要:DDK下build -c错误:error U1087: cannot have : and :: dependents for same target被build的source code所在path不能含有空格. 阅读全文
posted @ 2014-02-28 11:15 vcerror 阅读(242) 评论(0) 推荐(0)
摘要:1. 概述windows 提供了一种基于 lookaside list 的快速内存分配方案,区别于一般的使用 ExAllocatePoolWithTag() 系列函数的内存分配方式。每次从 lookaside list 里分配 fixed size 的内存。 系统构建两个条 lookaside 链表... 阅读全文
posted @ 2014-02-28 10:31 vcerror 阅读(667) 评论(1) 推荐(0)
摘要:1.检查内存可用性在驱动程序开发中,对内存的操作要格外小心。如果某段内存是只读的,而驱动程序试图去写操作,会导致系统的崩溃。DDK提供了两个函数,帮助程序员在不知道某段内存是否可读写的情况下,试探这段内存的可读写性。VOIDProbeForRead(INCONSTVOID*Address,INSIZ... 阅读全文
posted @ 2014-02-28 10:24 vcerror 阅读(396) 评论(0) 推荐(0)
摘要:1.Lookaside结构频繁的申请和回收内存,会导致在内存上产生大量的内存“空洞”,从而导致最终无法申请内存。DDK为程序员提供了Lookaside结构来解决这个问题。我们可以将Lookaside对象看成是一个内存容器。在初始化的时候,它先向Windows申请了一块比较大的内存。以后程序员每次申请... 阅读全文
posted @ 2014-02-28 10:23 vcerror 阅读(387) 评论(0) 推荐(0)
摘要:1.分配内核内存Windows驱动程序使用的内存资源非常珍贵,分配内存时要尽量节约。和应用程序一样,局部变量是存放在栈空间中的。但栈空间不会像应用程序那么大,所以驱动程序不适合递归调用或者局部变量是大型数据结构。如果需要大型数据结构,我们可以在堆中申请。堆中申请的函数有以下几个:(1)PVOIDEx... 阅读全文
posted @ 2014-02-28 10:23 vcerror 阅读(530) 评论(0) 推荐(0)
摘要:#includevoidmain(){inta=98;__asm{moval,aandal,11011111Bmova,al}printf("%c\n",a);}编译出现下面的错误:--------------------Configuration:cc-Win32Release----------... 阅读全文
posted @ 2014-02-27 14:57 vcerror 阅读(343) 评论(0) 推荐(0)
摘要:使用 CPUID 指令可以从 processor 厂商里获得关于 processor 的详细信息,CPUID 指令是从 Intel 486 处理器以后开始加入支持。1. 检测处理器是否支持 cpuid 指令现在的处理器都支持 cpuid 指令,确实没必要去检测是否支持,除非在古老的机器上运行才有必要... 阅读全文
posted @ 2014-02-27 14:49 vcerror 阅读(1699) 评论(0) 推荐(0)
摘要:声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处;本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任。(本资料由代码疯子整理)一、书籍推荐《Windows驱动开发技术详解》作者:张帆、史彩成;出版社:电子工... 阅读全文
posted @ 2014-02-27 11:12 vcerror 阅读(942) 评论(0) 推荐(0)
摘要:重载内核内容:1、将内核文件加载到内存2、进行基址重定位3、重定位ssdt结构4、HookKiFastCallEntry,让RING3进程调用走新内核下面一步一步的进行分析1、加载内核文件我们要加载哪一个文件呢?答案是:ntkrnlpa.exe,我测试的系统的XPsp3,该文件所在目录为C:\WIN... 阅读全文
posted @ 2014-02-25 17:27 vcerror 阅读(1004) 评论(0) 推荐(0)
摘要:A盾的原理是在驱动加载时重载os内核,获取原始ssdt表的地址。应用层点击查询的代码在文件A-ProtectView.cpp中,每种点击操作调用相应的query查询函数,在query函数里ReadFile。读操作的Handle是A盾自定义的操作码,类似DeviceIoControl的控制码,比如ha... 阅读全文
posted @ 2014-02-24 15:19 vcerror 阅读(1014) 评论(0) 推荐(0)
摘要:本帖最后由 shulun743 于 2014-1-24 12:27 编辑主要说32位系统:挂钩方式,现在常用的就是挂钩ssdt,shadown ssdt,inline hook挂钩文件系统过滤驱动和HOOK NT!KiFastCallEntry!不具体讨论HOOK和INLINE HOOK的区别了!就... 阅读全文
posted @ 2014-02-24 15:08 vcerror 阅读(241) 评论(0) 推荐(0)
摘要:在Windows内核中有一个活动进程链表AcvtivePeorecssList。它是一个双向链表,保存着系统中所有进程的EPROCESS结构。特别地,进程的EPROCESS结构包含一个具有指针成员FLINK和BLINK的LIST_ENTRY结构,这两个指针分别指向当前进程的前方和后方进程。当某些模块... 阅读全文
posted @ 2014-02-21 18:08 vcerror 阅读(359) 评论(0) 推荐(0)
摘要:本来按照这个来做,能跑通helloworld,可是复杂的驱动就会出错....不知道什么原因,后来就直接用命令行来编译的。------------------------------------------------------------------------------------------... 阅读全文
posted @ 2014-02-08 11:08 vcerror 阅读(1061) 评论(0) 推荐(0)
摘要:当用Visual Studio 2010 编译时 发生如下编译错误:2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2065: '_In_opt_z_' : undecla... 阅读全文
posted @ 2014-02-08 10:50 vcerror 阅读(987) 评论(0) 推荐(0)
摘要:权限是Windows管理的基础,当然与Windows用户关系最密切,平时接触最多的是与帐户相关的权限。对于Windows帐户权限的管理,你是否完全了解呢?下面,笔者以Winsows XP为例进行相关测试,希望对提升认识有所帮助。 1、系统权限概述 大家知道,Windows NT系统是个等级森严的... 阅读全文
posted @ 2014-02-07 15:48 vcerror 阅读(992) 评论(0) 推荐(0)