求索

在路上

ReactOS-Freeldr注册表HIVE文件格式2

上一节读了HIVE文件读入内存时的初始化操作。现在来看看实际对内存中的HIVE文件的操作。 首先是从空闲CELL中分配一个指定大小的CELL。HvAllocateCell就是做这件事情的。 这个函数有四个参数: 1. RegistryHive HHIVE结构指针 2. Size 需要分配的...

2016-05-20 17:21:04

阅读数:292

评论数:0

ReactOS-Freeldr注册表HIVE文件格式

ReactOS的注册表信息存储在ReactOS/System32/CONFIG/SYSTEM文件中。注册表文件使用的一种特殊的格式——HIVE。 HIVE文件主要由BASE_BLOCK/BIN/CELL三部分组成的。BASE_BLOCK是文件头,大小为4KB,里面存储了整个文件的一些全局信息。B...

2016-05-20 17:20:30

阅读数:404

评论数:0

IRP的同步完成与异步完成

应用程序中对设备进行同步、异步操作,都必须得到驱动程序的支持。所有对设备的操作都会转化为IRP请求,并传递到相应的派遣函数中。可以有两种方式处理IRP请求,第一种是在派遣函数中直接结束IRP请求,即同步处理。另一种方法是在派遣函数中不结束IRP请求,而是让派遣函数直接返回。IRP在以后的某个时候再...

2016-05-18 16:55:25

阅读数:465

评论数:0

搞明白IRP这个东东了

按照ms的步骤走了一遍,搞明白了,整点笔记记录一下,别忘了。 IRP的结构: [cpp] view plain copy print? typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _IR...

2016-05-18 16:30:29

阅读数:1783

评论数:0

IRQL APC_LEVEL and APC

这篇文章主要说明俩个问题: 1. 在APC_LEVEL上,Thread为何不能被suspend。 2. 在 APC_LEVEL上,可以使用分页内存的原因。 关于线程如何响应APC,要看是何种APC,请参考MSDN文档。我在看微软提供的资料的时候,发现俩个比较难懂的问题,把它们单独拿出来...

2016-05-16 10:08:14

阅读数:536

评论数:0

x86保护模式的几点思考——IRQ、中断号和中断向量

说到中断号和中断向量,也许你并不陌生,这两个概念也可以将中断原理解释个大概了。但是当你深究下去的时候你会碰到另一个东西——IRQ,之后自然而然的对从硬件级开始到中断向量表的整个中断过程产生好奇,然后继续研究,就能学到下文中所包含的内容了。      你没有硬件基础?我也没有!所以让咱们从零开始。...

2016-05-16 09:49:23

阅读数:2238

评论数:0

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...

2016-05-13 10:42:58

阅读数:277

评论数:0

从IRQ到IRQL(APIC版)

作者:SoBeIt 出处:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=45502 日期:2005-02-04 事实上,老久的PIC在很早以前就被淘汰了,取而代之的是APIC。由于APIC可以兼容PIC,所以在很多单处...

2016-05-12 16:51:27

阅读数:384

评论数:0

从IRQ到IRQL(PIC版)

SoBeIt 这个题目让我想起了小时候学的课文《从百草园到三味书屋》,然后就想起了以前无忧无虑的快乐时光,这是上了大学以后所不再有的,有时常常叹息过去的美好日子不会再有了。sigh~扯远了。 本文所有的东西都不涉及APIC。先来介绍一下名词,免得有些哥们看晕了:) PIC:Pro...

2016-05-12 16:34:36

阅读数:506

评论数:0

NT内核代码分析

某种意义上nt内核用irql解决了一切,这正是由于它有一个基本的,核心的支撑。这就是它的抽象中断框架---IRQL。在linux中,我们知道,如 果我要知道能否调用schedule进行调度,那么我必须知道还有什么数据结构处在临界区,这个时候是否适合抢占,等等,当然内核的数据结构已经做得很好,我们做...

2016-05-12 16:01:49

阅读数:271

评论数:0

ReactOS实现的兼容NT内核分析--KfLowerIrql函数

本文代码来自ReactOS-0.3.6。 当硬件中断完成后将要返回的时候,将要调用KfLowerIrql来使当前cpu的irql降低到中断发生前的irql,但是真的就是直接降低到原来优先级就完事了吗?我们看看代码(桩代码,待会分析真正的): VOID HalpLowerIrql(KIRQL N...

2016-05-12 16:01:02

阅读数:357

评论数:0

深入学习APC

在NT中,有两种类型的APCs:用户模式和内核模式。用户APCs运行在用户模式下目标线程当前上下文中,并且需要从目标线程得到许可来运行。特别是,用户模式的APCs需要目标线程处在alertable等待状态才能被成功的调度执行。通过调用下面任意一个函数,都可以让线程进入这种状态。这些函数是:KeWa...

2016-05-12 15:07:36

阅读数:1206

评论数:0

KiFastCallEntry() 机制分析

1. 概述 从 windows xp 和 windows 2003 开始使用了快速切入内核的方式提供系统服务例程的调用。 KiFastCallEntry() 的实现是直接使用汇编语言,C 语言不能直接表达某些操作。我从 windows 2003 里反汇编出来,写成 C 伪码形式,点击这里察看:...

2016-05-09 14:04:12

阅读数:577

评论数:0

虫趣:BAD POOL CALLER (par1: 0×20)

【作者:张佩】 【原文:http://www.yiiyee.cn/Blog/0×19-1/】 内核在管理内存的时候,为了提高内存使用效率,对于小片内存的申请(小于一个PAGE大小),都是通过内存池来操作的。系统里面有两种不同的内存池:分页内存池和非分页内存池。这二者的区别是很明显的:分页内存池所...

2016-05-04 11:29:55

阅读数:191

评论数:0

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 som...

2016-05-03 14:07:08

阅读数:351

评论数:0

SSDT Hook实现内核级的进程保护

目录 SSDT Hook效果图SSDT简介SSDT结构SSDT HOOK原理Hook前准备如何获得SSDT中函数的地址呢SSDT Hook流程SSDT Hook实现进程保护Ring3与Ring0的通信如何安装启动停止卸载服务参考文献源码附件版权 SSDT Hook效果图 加载驱动...

2016-05-03 10:33:45

阅读数:415

评论数:0

ring0下cr0的作用

CR0 是系统内的控制寄存器之一。控制寄存器是一些特殊的寄存器,它们可以控制CPU的一些重要特性。      0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。      1 位是监控协处理位MP(Mon...

2016-05-03 10:32:53

阅读数:488

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭