- 博客(17)
- 收藏
- 关注
转载 ReactOS-Freeldr注册表HIVE文件格式2
上一节读了HIVE文件读入内存时的初始化操作。现在来看看实际对内存中的HIVE文件的操作。首先是从空闲CELL中分配一个指定大小的CELL。HvAllocateCell就是做这件事情的。这个函数有四个参数:1. RegistryHive HHIVE结构指针2. Size 需要分配的CELL大小(不包括HCELL结构的大小)3. Storage 分配的CELL是Stable还是V
2016-05-20 17:21:04 434
转载 ReactOS-Freeldr注册表HIVE文件格式
ReactOS的注册表信息存储在ReactOS/System32/CONFIG/SYSTEM文件中。注册表文件使用的一种特殊的格式——HIVE。HIVE文件主要由BASE_BLOCK/BIN/CELL三部分组成的。BASE_BLOCK是文件头,大小为4KB,里面存储了整个文件的一些全局信息。BIN是以4KB对其的一段空间,里面管理了若干个CELL。CELL是一段用户自定义大小的空间,注册表的键
2016-05-20 17:20:30 660
转载 IRP的同步完成与异步完成
应用程序中对设备进行同步、异步操作,都必须得到驱动程序的支持。所有对设备的操作都会转化为IRP请求,并传递到相应的派遣函数中。可以有两种方式处理IRP请求,第一种是在派遣函数中直接结束IRP请求,即同步处理。另一种方法是在派遣函数中不结束IRP请求,而是让派遣函数直接返回。IRP在以后的某个时候再进行处理。1)IRP的同步完成 在应用程序中调用CreateFile win32API函
2016-05-18 16:55:25 1180
转载 搞明白IRP这个东东了
按照ms的步骤走了一遍,搞明白了,整点笔记记录一下,别忘了。IRP的结构:[cpp] view plain copy print?typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _IRP { CSHORT Type; USHORT Size; //
2016-05-18 16:30:29 4269
转载 IRQL APC_LEVEL and APC
这篇文章主要说明俩个问题: 1. 在APC_LEVEL上,Thread为何不能被suspend。 2. 在 APC_LEVEL上,可以使用分页内存的原因。 关于线程如何响应APC,要看是何种APC,请参考MSDN文档。我在看微软提供的资料的时候,发现俩个比较难懂的问题,把它们单独拿出来讨论。 首先看中断请求级:IRQL(Interrupt Request Levels)
2016-05-16 10:08:14 823
转载 x86保护模式的几点思考——IRQ、中断号和中断向量
说到中断号和中断向量,也许你并不陌生,这两个概念也可以将中断原理解释个大概了。但是当你深究下去的时候你会碰到另一个东西——IRQ,之后自然而然的对从硬件级开始到中断向量表的整个中断过程产生好奇,然后继续研究,就能学到下文中所包含的内容了。 你没有硬件基础?我也没有!所以让咱们从零开始。 IRQ(Interrupt ReQuest),中文翻译应该为“中断请求”,但实际上一些文
2016-05-16 09:49:23 7021 2
转载 The NT Insider:Stop Interrupting Me -- Of PICs and APICs
创建时间:2005-03-16文章属性:翻译文章提交:tombkeeper (t0mbkeeper_at_hotmail.com)The NT Insider:Stop Interrupting Me -- Of PICs and APICs 董岩 译greatdong_2001@163.com 尽管 Windows 的设计是使其能够运行在多种平台上,而实际上我
2016-05-13 10:42:58 534
转载 从IRQ到IRQL(APIC版)
作者:SoBeIt出处:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=45502日期:2005-02-04事实上,老久的PIC在很早以前就被淘汰了,取而代之的是APIC。由于APIC可以兼容PIC,所以在很多单处理器系统上我们看到的PIC实际是APIC的兼容PIC模式。APIC主要应用于多处理器操作系统,是为了解决IRQ太少和处
2016-05-12 16:51:27 554
转载 从IRQ到IRQL(PIC版)
SoBeIt这个题目让我想起了小时候学的课文《从百草园到三味书屋》,然后就想起了以前无忧无虑的快乐时光,这是上了大学以后所不再有的,有时常常叹息过去的美好日子不会再有了。sigh~扯远了。本文所有的东西都不涉及APIC。先来介绍一下名词,免得有些哥们看晕了:)PIC:Programmed Interrupt Controller,可编程中断控制器,是一块芯片,里面包含了中断
2016-05-12 16:34:36 882
转载 NT内核代码分析
某种意义上nt内核用irql解决了一切,这正是由于它有一个基本的,核心的支撑。这就是它的抽象中断框架---IRQL。在linux中,我们知道,如 果我要知道能否调用schedule进行调度,那么我必须知道还有什么数据结构处在临界区,这个时候是否适合抢占,等等,当然内核的数据结构已经做得很好,我们做开发的不用考虑那么多,比如用spin_lock啦,用preempt_disable啦,但是当你读到这些
2016-05-12 16:01:49 1245
转载 ReactOS实现的兼容NT内核分析--KfLowerIrql函数
本文代码来自ReactOS-0.3.6。当硬件中断完成后将要返回的时候,将要调用KfLowerIrql来使当前cpu的irql降低到中断发生前的irql,但是真的就是直接降低到原来优先级就完事了吗?我们看看代码(桩代码,待会分析真正的):VOID HalpLowerIrql(KIRQL NewIrql){ if (NewIrql >= PROFILE_LEVEL)//如果原来的优
2016-05-12 16:01:02 478
转载 深入学习APC
在NT中,有两种类型的APCs:用户模式和内核模式。用户APCs运行在用户模式下目标线程当前上下文中,并且需要从目标线程得到许可来运行。特别是,用户模式的APCs需要目标线程处在alertable等待状态才能被成功的调度执行。通过调用下面任意一个函数,都可以让线程进入这种状态。这些函数是:KeWaitForSingleObject, KeWaitForMultipleObjects, KeWait
2016-05-12 15:07:36 2338
转载 KiFastCallEntry() 机制分析
1. 概述从 windows xp 和 windows 2003 开始使用了快速切入内核的方式提供系统服务例程的调用。KiFastCallEntry() 的实现是直接使用汇编语言,C 语言不能直接表达某些操作。我从 windows 2003 里反汇编出来,写成 C 伪码形式,点击这里察看:KiFastCallEntry()在下面的篇章里,我将分析从 Win32 子系统 API Writ
2016-05-09 14:04:12 1296
转载 虫趣:BAD POOL CALLER (par1: 0×20)
【作者:张佩】 【原文:http://www.yiiyee.cn/Blog/0×19-1/】内核在管理内存的时候,为了提高内存使用效率,对于小片内存的申请(小于一个PAGE大小),都是通过内存池来操作的。系统里面有两种不同的内存池:分页内存池和非分页内存池。这二者的区别是很明显的:分页内存池所使用的内存页面,随时有可能被分页出去;而非分页内存池所使用的虚拟页面,总是留驻在物理内存中。对于运
2016-05-04 11:29:55 328
转载 How do I keep my driver from running out of kernel-mode stack
Driver development tip: The size of the kernel-mode stack varies among different hardware platforms, but it is always a scarce resource. Here are some tips for understanding and managing your driver's
2016-05-03 14:07:08 499
转载 SSDT Hook实现内核级的进程保护
目录SSDT Hook效果图SSDT简介SSDT结构SSDT HOOK原理Hook前准备如何获得SSDT中函数的地址呢SSDT Hook流程SSDT Hook实现进程保护Ring3与Ring0的通信如何安装启动停止卸载服务参考文献源码附件版权SSDT Hook效果图加载驱动并成功Hook NtTerminateProcess函数:当对 指定的进程进行保护后,尝
2016-05-03 10:33:45 538
转载 ring0下cr0的作用
CR0 是系统内的控制寄存器之一。控制寄存器是一些特殊的寄存器,它们可以控制CPU的一些重要特性。 0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。 1 位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个“协处理
2016-05-03 10:32:53 1097
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人