首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EPROCESS DirBase是如何生成"VAD树根“的?

EPROCESS DirBase是一个Windows操作系统中的数据结构,用于存储进程的虚拟地址空间(Virtual Address Space)的根目录。VAD(Virtual Address Descriptor)树是用来管理进程的虚拟地址空间的数据结构,它以树的形式组织,每个节点代表一个连续的虚拟地址范围。

生成"VAD树根"的过程如下:

  1. 当一个进程被创建时,操作系统会为该进程分配一个EPROCESS结构,其中包含了DirBase字段。DirBase是一个指向进程的页表(Page Table)的指针,用于将虚拟地址转换为物理地址。
  2. 在进程的初始化过程中,操作系统会为该进程创建一个根VAD节点,即VAD树的根节点。这个根节点表示整个进程的虚拟地址空间。
  3. 操作系统会根据进程的需要,动态地分配和释放VAD节点,以管理进程的虚拟地址空间。每个VAD节点都包含了一段连续的虚拟地址范围和相应的属性信息,如访问权限、保护属性等。
  4. 当进程需要访问某个虚拟地址时,操作系统会根据DirBase字段找到进程的页表,然后根据虚拟地址在VAD树中查找对应的VAD节点。
  5. 如果找到了对应的VAD节点,操作系统会根据VAD节点的属性信息进行权限检查,然后将虚拟地址转换为物理地址,从而实现对内存的访问。

需要注意的是,以上过程是操作系统内部的实现细节,对于开发工程师来说,了解这些细节可以帮助他们更好地理解和优化程序的内存管理,但在实际开发中并不需要直接操作EPROCESS DirBase或VAD树。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

驱动开发:内核遍历进程VAD结构体

在上一篇文章《驱动开发:内核中实现Dump进程转储》中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚拟地址描述符...,VAD是一个AVL自平衡二叉树,树的每一个节点代表一段虚拟地址空间。...的偏移是+0x658紧跟其后的还有vadCount的计数等。...图片VAD结构是如何被添加的?通常情况下系统调用VirtualAllocate等申请一段堆内存时,则会在VAD树上增加一个结点_MMVAD结构体,需要说明的是栈并不受VAD的管理。...图片如上在EPROCESS结构中可以找到VAD结构的相对偏移+0x658以及进程VAD计数偏移+0x668,我们首先通过!process 0 0指令得到当前所有进程的EPROCESS结构,并选中进程。

71510

4.6 Windows驱动开发:内核遍历进程VAD结构体

VAD是一个AVL自平衡二叉树,树的每一个节点代表一段虚拟地址空间。...VAD是一个基于AVL自平衡二叉树的数据结构,它用于维护一段连续的虚拟地址空间。每个VAD节点都描述了一段连续的虚拟地址空间,并包含了该空间的属性信息,如该空间是否可读、可写、可执行等等。...EPROCESS 结构体是用于表示操作系统中的一个进程的数据结构,其中包含了许多与该进程相关的信息,包括了该进程的虚拟地址空间描述符树(VAD 结构树)。...VAD结构是如何被添加的? 通常情况下系统调用VirtualAllocate等申请一段堆内存时,则会在VAD树上增加一个结点_MMVAD结构体,需要说明的是栈并不受VAD的管理。...但需要注意的是,栈并不受 VAD 树的管理,因为栈空间的分配和管理是由系统直接实现的。

84990
  • x86分页复习之10-10-12分页

    ,而我们学习保护模式的本质也是学习windows如何保护内存的....这个寄存器就是CR3寄存器.而每个进程都有一个物理地址.也称为DirBase 这个DirBase是记录的每个进程的物理地址起始地址的. 看下图: ?...我们的CR3寄存器记录的是物理地址,但是这个物理地址不是我们要查看的进程内的.当然每个进程当使用的时候,CR3都会切换为这个进程的CR3(物理地址起始位置)这里我们先不说如何切换.直接使用进程中的物理地址...这里说下思路: 1.内核中遍历进程,或者ring3传入进程到内核. 2.内核中通过进程Pid找出对应的EPROCES结构 (PsLookupProcessByProcessId) 3.通过EPROCESS...结构找到其DirBase的偏移.获取其偏移位置的DirBase的物理地址 4.通过10-10-12分页的模式,拆分传入的你想查看的这个进程的任一虚拟地址. 5.通过上述实际操作的原理,进行自己读取内存.

    1.1K20

    随机数是如何生成的

    但是在计算机中, 要想生成一个随机数, 就需要通过一个算法来实现, 那么生成随机数的算法是如何实现的呢? 简单想一下这个事情, 通过确定的输入, 确定的步骤, 输出不确定的值?...当然不是, 所以一直都在说函数生成的是伪随机数而不是真正的随机数. 伪随机数是什么呢?...那么如何生成这个函数呢? 简单看了几种随机函数, 主要了解一下思想, 毕竟咱也不会真正的去写一个这样的函数. 计算机中的伪随机数 平方取中 由伟大的冯诺依曼前辈想出的....随机序列的生成同理, 将上一次的输出作为下一次的输入. 很明显, 其中的 m 决定了序列生成随机数的最大值, 「截断性线性同余法」, 「逆同余法」 等是它的变种..... ---- 等等吧, 有很多生成随机数的方法, 不过具体怎么生成并实现我并不关心, 我只是想了解一下它大概是如何工作的, 能够如何生成随机数.

    1.6K20

    页面是如何生成的(宏观角度)

    首先,需要和厂商的业务员(小西 Compositor)进行沟通交流,在小西确认了该批订单的量和批次(是否是滚动类事件等),决定到底是通过主厂(主线程)还是该公司的附属厂(GPU线程)进行该批次产品的生成...重新计算样式 :对「新生成」或「被修改」的元素进行样式信息计算。此过程可能触发整个DOM树的整体计算也可以是局部小范围的计算过程,取决于被改动的元素的位置。...将元素样式和DOM元素结合起来,就会生成Render Tree 布局(Layout): 计算每个「可视元素」的位置信息(距离视口的距离和元素本身大小)。并生成对应的Layout Tree。...绘制 (Paint): 该过程包含两个过程,第一个过程是绘制操作(painting),该过程用于生成任何被新生成或者改动元素的绘制信息(包含图形信息和文本信息);第二个过程是栅格化(Rasterization...),用于执行上一个过程生成的绘制信息。

    74920

    用户画像的标签是如何生成的

    该统计类标签生成语句如下所示,其中通过SUM函数计算出了每一个user_id的在线时长总和。SQL语句中的日期范围是写死的,在实际生产环节,日期范围可以通过变量来替代。...规则标签 规则标签的生成依赖现有标签内容,需要在已有标签数据的基础上进行综合条件判断,最终生成新的标签数据,比如“是否男性高粉”依赖性别和粉丝数标签;"Android高端机”依赖手机操作系统和手机价格标签...男性高粉的定义是粉丝数超过10万的男性用户,该标签的生成语句如下所示。...UserId,然后借助工程代码自动生成上述SQL语句,通过提交SQL语句到大数据引擎,最终实现了通过用户上传文件生成标签的功能。...如何选择算法模型是该阶段的重点,需要从决策树、SVM、随机森林、Logistic回归、神经网络等模型中选择最适合解决当前问题的模型,也可以测试不同的算法模型并最终交叉验证选出结果最好的一个。

    69200

    暴力搜索内存进程对象反隐藏进程

    基于系统内存搜索的进程监测技术利用EPROCESS结构体特征找到EPROCESS地址指针进而输出进程信息,可以有效地对进程进行全面的监测。 那我们应该搜索进程的什么结构?...进程的PEB(PEB(Process Environment Block)——进程环境块)。主要原因是PEB地址的高4位是相同的。.... // UNLOCK_ADDRESS_SPACE (TargetProcess); ExFreePool (Vad); return Status; } 下面是这个过程的内存示意图...), 高位的2GB 是windows核心模式使用的, 是内核态的地址空间, 即0×80000000 到0xFFFFFFFF, 这里存放着整个内核的代码和所有的内核模块, 以及内核所维护的数据,包括...非分页缓冲池里分配的内存是不能交换到虚拟内存上面的, 假如放到分页缓冲池并被交换到磁盘上时可能会发生灾难性的后果, 进程的EPROCESS结构体就在非分页缓冲 池 中.

    1.7K20

    全球如何保证区块生成是匀速的?

    《1分钟了解挖矿的本质》,介绍了什么是挖矿,挖矿是在最新区块链的数据上,生成一个符合条件的区块,链入区块链的过程。 区块链有个特点:虽然大家都在采矿,但挖到矿的速度是均匀的。...技术上,区块链如何动态调节,以保证匀速生成区块,是今天这一分钟要聊的内容。 画外音:之前不少朋友说文章太长,1分钟读不完,好吧,我错了,这次真的是1分钟。 回顾,区块是怎么生成的?...可以认为哈希的结果是完全随机的,要得出前48bit必须是0x00000000FFFF的哈希结果,就如同连续抛了48次硬币,每次都得到我们想要的结果,其概率是(1/2)^48,所以概率非常小,生成区块的难度很高...画外音:区块的生成原理详见《1分钟了解挖矿的本质》。 区块如何保证生成速度匀速?...20分钟才生成了一个区块,说明生成太慢了,需要加速一倍 如何控制加速和变慢呢?

    1.2K90

    windows驱动开发-进程结构体初探

    目录 内核结构 进程结构体 字段 以及简单的应用 一丶进程结构体 1.1 简介 1.2 KPROCESS 结构体 1.3 EPROCESS 内核结构 进程结构体 字段 以及简单的应用 一丶进程结构体 1.1...而这些其实在操作系统内核中是由记录的。 这里我简单的说下重要字段。...首先 EPROCESS的第一个成员是 KPROCESS 所以我们先说下 KPROCESS代表的是啥 1.2 KPROCESS 结构体 请注意这里只说下重要结构,且操作系统内核中的结构是随着系统改变的。...设置之后我们则可以获取每个核心的GDT表并且显示出来。 1.3 EPROCESS EPROCESS 记录的信息很多。记录的东西比KPROCESS 还多。...如果清0 可以让我们不被调试(注意是线程一直清零来达到反调试的目的) +0x448 ImageFilePointer : Ptr64 _FILE_OBJECT //记录的当前进程的

    94740

    5.9 Windows驱动开发:内核InlineHook挂钩技术

    在上一章《内核LDE64引擎计算汇编长度》中,LyShark教大家如何通过LDE64引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的InlineHook函数挂钩其实与应用层一致,...都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同的是内核Hook只针对内核API函数,但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的...内核挂钩的原理是一种劫持系统函数调用的技术,用于在运行时对系统函数进行修改或者监控。...3.保存原始函数的前15个字节的指令,因为这些指令通常被认为是函数的前导码或是修饰码。...而如果需要恢复挂钩状态,则只需要还原提前保存的机器码即可,恢复内核挂钩的原理是将先前保存的原始函数前15个字节的指令写回到原始函数地址上,从而还原原始函数的调用。

    55610

    windows10内核态提权方法汇总

    // eprocess 偏移为 0x360 的位置存储的是token ,这个偏移与其他版本的windows有区别 0: kd> dq ffffa98848069080 + 0x360 L1 ffffa988...写shellcode 按照上面的思路,首先需要获取到进程的EPROCESS结构体的地址,在内核中可以获取到EPROCESS结构的函数是PsGetCurrentProcess 我们反汇编这个函数的代码:...在这里其实有一个疑问,我们获取的其实是_KPROCESS的地址,但需要的是_EPROCESS的地址,这怎么处理呢?...其实_KPROCESS 和_EPROCESS 指向的是同一个结构,这个从_EPROCESS的定义中就可以看出来,_EPROCESS是包含了_KPROCESS的结构体,他们的起始地址是一样的。...现在我们可以获取到cmd.exe的进程id,接下里需要获取到cmd.exe进程的 _EPROCESS,这里需要另外一个知识,windows系统中的所有进程_KPROCESS是使用一个双向链表进行管理的,

    1.4K30

    单细胞计数矩阵是如何生成的?(二)

    导读 本文将接上期【保姆教程:什么是单细胞?(一)】后,介绍scRNA-seq的表达矩阵是如何生成。后续实战分析内容,请关注下方公众号: 1....2. 3’-end 对于 scRNA-seq 数据的分析,了解每个读数中存在哪些信息以及如何在分析中使用它是有帮助的。...一般工作流程如下所示: 单细胞工作流程 工作流程的步骤是: 计数矩阵的生成:formating reads, demultiplexing samples, mapping and quantification...测序后,要么将原始测序数据输出为 BCL 或 FASTQ 格式,要么生成计数矩阵。如果读取是 BCL 格式,那么需要转换为 FASTQ 格式。bcl2fastq 工具可以轻松执行此转换。...对于许多 scRNA-seq 方法,从原始测序数据生成计数矩阵经历的步骤类似。 alevin[1] 是一个命令行工具,用于估计 scRNA-seq 数据的表达,其中转录物的 3' 末端被测序。

    88420

    迷雾退散:揭秘创建进程时ebx为什么指向peb的答案

    一、背景 这篇文章的起因,是笔者之前在做样本分析的时候,经常会遇到需要调试傀儡进程的情况,而其中有一种情景是将启动的白进程PE文件整个掏空并用黑进程进行替换。...二、具体分析 先抛出结论,这里的eax与ebx属于线程上下文信息,在一个PE文件开始被运行的过程中,主线程上下文初始化过程是在进程已经创建完成,而主线程还没创建的阶段发生的,下面是具体更详细的分析: 首先我们需要对进程的创建有一个大概的认识...判断参数 JobMemberLevel是否为0, 如果不为0,接着判断父进程的EPROCESS->Job是否为0,如果JobMemberLevel不为为0且EPROCESS->Job为0,则返回无效参数错误后退出该函数...在MiCreatePebOrTeb函数中首先会通过ExAllocatePoolWithTag来申请0x34大小的空间,接着通过MiFindEmptyAddressRangeDownTree函数在VAD树中查找一块未被使用的地址空间范围...,并返回该范围的起始地址,最后通过MiInsertVad函数将申请的地址空间插入到VAD树中。

    78520

    驱动开发:内核层InlineHook挂钩函数

    在上一章《驱动开发:内核LDE64引擎计算汇编长度》中,LyShark教大家如何通过LDE64引擎实现计算反汇编指令长度,本章将在此基础之上实现内联函数挂钩,内核中的InlineHook函数挂钩其实与应用层一致...,都是使用劫持执行流并跳转到我们自己的函数上来做处理,唯一的不同的是内核Hook只针对内核API函数,但由于其身处在最底层所以一旦被挂钩其整个应用层都将会受到影响,这就直接决定了在内核层挂钩的效果是应用层无法比拟的...原理很简单,基本上InlineHook类的代码都是一个样子,如下是一段完整的挂钩PsLookupProcessByProcessId的驱动程序,当程序被加载时则默认会保护lyshark.exe进程,使其无法被用户使用任务管理器结束掉...;st = ((PSLOOKUPPROCESSBYPROCESSID)original_address)(ProcessId, Process);if (NT_SUCCESS(st)){// 判断是否是需要保护的进程...process 0 0 lyshark.exePROCESS ffff9a0a44ec4080SessionId: 1 Cid: 05b8 Peb: 0034d000 ParentCid: 13f0DirBase

    67530

    一文读懂 | coredump文件是如何生成的

    有些 BUG 是业务逻辑上的错误导致的,一般不会导致程序崩溃,例如:原本要将两个数相加,但不小心把这两个数相减,而导致结果出错。...如果没有生成 coredump 文件的话,一般是受到资源限制,先使用命令 ulimit -c unlimited 设置资源不受限制。 coredump 文件点后面的数字是进程的 PID。...我们可以通过下图来展示内核是怎么生成 coredump 文件的: ? 进程从内核态返回到用户态的地方有很多,如 从系统调用返回、从硬中断处理程序返回 和 从进程调度程序返回 等。...上图主要通过 从进程调度程序返回 作为示例,来展示内核是怎么生成 coredump 文件的。 下面我们来分析一下 coredump 文件生成过程的步骤: 1....get_signal_to_deliver 内核函数的主要工作是从进程的信号队列中获取一个信号,然后根据信号的类型来进行不同的操作。

    9.3K41

    网站页面的相关产品链接是如何生成的?

    无论是单一入口还是所入口结构,对最终产品页面来说都可能有一个缺陷,那就是太过规则,有时候会造成某个部分的产品页面都不能被收录。单一入口结构更明显。...在产品页面生成相关产品链接,可以在一定程度上解决这个问题。这里所说的相关产品链接,不是写文章或发布产品信息时人工在正文中加进去的链接,而是通过某种机制自动生成的、连向其他产品页面的链接。...常见的相关产品链接生成方法包括: 1、购买这个产品的用户还购买了哪些其他产品 这种链接通常不会是同时上架、产品序号相连是页面,用户购买过的产品之间不一定有什么联系,往往会横跨不同分类、品牌。...2、同一个品牌或生产商的其他产品 同一个生产商或品牌,常婵有不同分类下的产品,最终产品页面列出同一个生产商提供的不同分类的产品链接,也为更多的产品提供了较为随机的入口。...3、由标签生成的相似产品 TAG标签由站长人工填写,或程度自动提取关键词,得到的标签与分类名称并不同。通过标签聚合相关产品页具有比较大的随机性。

    94830

    AI 文本生成图像技术是如何运作的

    AI 是如何从文字生成图像的?简单来说,这个过程包括几个关键步骤:数据学习:AI 首先要学会识别物体。...通过大量的图片和文字描述,AI 学习了什么是“猫”、“车”或者“飞行”,因此当你输入“会飞的汽车”时,它能够理解这些概念并生成相应的图像。...最终生成图像:经过训练,AI 可以根据任何输入生成相应的图像。无论是“打篮球的机器人”还是“糖果做成的海盗船”,AI 都能将这些描述转换为视觉图像。有哪些好用的AI文本生成图像工具?...未来的应用场景AI 文本生成图像技术的应用远不止是玩玩而已,它在各个行业都有潜在的广泛用途:内容创作:无论是写作还是制作营销材料,AI 能够即时生成与内容相关的图像,节省大量时间。...这种技术的应用场景十分广泛,无论是设计原型、生成营销素材,还是在个人娱乐中进行创意表达,AI 都为用户提供了更多的可能性。

    19410
    领券