nt!MiSessionAddProcess函數分析和nt!MmSessionSpace全局變量的關系

第一部分:
1: kd> g
Breakpoint 42 hit
nt!MiSessionAddProcess:
80ab2fbe 55????????????? push??? ebp
1: kd> kc
?#
00 nt!MiSessionAddProcess
01 nt!MmCreateProcessAddressSpace
02 nt!PspCreateProcess
03 nt!NtCreateProcessEx
04 nt!_KiSystemService
05 SharedUserData!SystemCallStub
06 ntdll!NtCreateProcessEx
07 kernel32!CreateProcessInternalW
08 kernel32!CreateProcessW
09 winlogon!StartSystemProcess
0a winlogon!ExecSystemProcesses
0b winlogon!WinMain
0c winlogon!WinMainCRTStartup


#define SESSION_GLOBAL(_Session)??? (_Session->GlobalVirtualAddress)

第二部分:
1: kd> x nt!MmSessionSpace
80bf0048????????? nt!MmSessionSpace = 0xbf7f0000
1: kd> dx -r1 ((ntkrnlmp!_MM_SESSION_SPACE *)0xbf7f0000)
((ntkrnlmp!_MM_SESSION_SPACE *)0xbf7f0000)???????????????? : 0xbf7f0000 [Type: _MM_SESSION_SPACE *]
??? [+0x000] GlobalVirtualAddress : 0xf79b1000 [Type: _MM_SESSION_SPACE *]

0xf79b1000

1: kd> dx -r1 ((ntkrnlmp!_MM_SESSION_SPACE *)0xbf7f0000)
((ntkrnlmp!_MM_SESSION_SPACE *)0xbf7f0000)???????????????? : 0xbf7f0000 [Type: _MM_SESSION_SPACE *]
??? [+0x000] GlobalVirtualAddress : 0xf79b1000 [Type: _MM_SESSION_SPACE *]
??? [+0x004] ReferenceCount?? : 0x2 [Type: unsigned long]
??? [+0x008] u??????????????? [Type: __unnamed]
??? [+0x00c] SessionId??????? : 0x0 [Type: unsigned long]
??? [+0x010] ProcessList????? [Type: _LIST_ENTRY]
??? [+0x018] LastProcessSwappedOutTime : {0} [Type: _LARGE_INTEGER]
??? [+0x020] SessionPageDirectoryIndex : 0x7b44e [Type: unsigned long]
??? [+0x024] NonPagablePages? : 0x10 [Type: unsigned long]
??? [+0x028] CommittedPages?? : 0x3e [Type: unsigned long]
??? [+0x02c] PagedPoolStart?? : 0xbc000000 [Type: void *]
??? [+0x030] PagedPoolEnd???? : 0xbc3fffff [Type: void *]
??? [+0x034] PagedPoolBasePde : 0xc0300bc0 [Type: _MMPTE *]
??? [+0x038] Color??????????? : 0x37 [Type: unsigned long]
??? [+0x03c] ProcessOutSwapCount : 0x0 [Type: unsigned long]
??? [+0x040] SessionPoolAllocationFailures [Type: unsigned long [4]]
??? [+0x050] ImageList??????? [Type: _LIST_ENTRY]
??? [+0x058] LocaleId???????? : 0x409 [Type: unsigned long]
??? [+0x05c] AttachCount????? : 0x0 [Type: unsigned long]
??? [+0x060] AttachEvent????? [Type: _KEVENT]
??? [+0x070] LastProcess????? : 0x0 [Type: _EPROCESS *]
??? [+0x074] ProcessReferenceToSession : 2 [Type: long]
??? [+0x078] WsListEntry????? [Type: _LIST_ENTRY]
??? [+0x080] Lookaside??????? [Type: _GENERAL_LOOKASIDE [26]]
??? [+0xd80] Session????????? [Type: _MMSESSION]
??? [+0xdc0] PagedPoolMutex?? [Type: _KGUARDED_MUTEX]
??? [+0xde0] PagedPoolInfo??? [Type: _MM_PAGED_POOL_INFO]
??? [+0xe00] Vm?????????????? [Type: _MMSUPPORT]
??? [+0xe60] Wsle???????????? : 0xbf400038 [Type: _MMWSLE *]
??? [+0xe64] Win32KDriverUnload : 0xbf8aaad0 [Type: void (*)(_DRIVER_OBJECT *)]
??? [+0xe68] PagedPool??????? [Type: _POOL_DESCRIPTOR]
??? [+0x1e98] PageTables?????? : 0x89579e00 [Type: _MMPTE *]
??? [+0x1e9c] ImageLoadingCount : 0 [Type: long]
??? [+0x1ea0] Debug??????????? [Type: unsigned long [56]]
??? [+0x1f80] Debug2?????????? [Type: _MM_SESSION_MEMORY_COUNTERS [8]]


第三部分:
1: kd> dt nt!MmSessionPoolSize
0x400000
1: kd> dt nt!MiSessionPoolStart
0xbc000000
1: kd> dt nt!MiSessionViewStart
0xbc400000

1: kd> lm
start?? ??? ?end?????? ??? ??? ?module name
bf800000 bfa9a000? ??? ?win32k??? ??? ?(private pdb symbols)? j:\retail-checked\sys\win32k.pdb

1: kd> dt nt!MiSessionImageStart
0xbf800000


BOOLEAN
MmInitSystem (
??? IN ULONG Phase,
??? IN PLOADER_PARAMETER_BLOCK LoaderBlock
??? )
{


??????? //
??????? // Initialize some global session variables.
??????? //

??????? MmSessionSpace = (PMM_SESSION_SPACE)((ULONG_PTR)MmSessionBase + MmSessionSize - MmSessionImageSize - MI_SESSION_SPACE_STRUCT_SIZE);

MmSessionSpace=0xbc000000+0x4000000-0x800000-0x10000=0xbf7f0000


1: kd> dt nt!MmSessionBase
0xbc000000
1: kd> dt nt!MmSessionSize
0x4000000
1: kd> dt nt!MmSessionImageSize
0x800000
#define MI_SESSION_SPACE_STRUCT_SIZE MM_ALLOCATION_GRANULARITY
#define MM_ALLOCATION_GRANULARITY ((ULONG)0x10000)


?Virtual memory layout of session space when loaded down from 0xC0000000.

? Note that the sizes of mapped views, paged pool and images are registry
? tunable on 32-bit systems (if NOT booted /3GB, as 3GB has very limited
? address space).

???????????????? +------------------------------------+
??????? C0000000 |??????????????????????????????????? |
???????????????? | win32k.sys, video drivers and any? |
???????????????? | rebased NT4 printer drivers.?????? |
???????????????? |??????????????????????????????????? |
???????????????? |???????????? (8MB)????????????????? |
???????????????? |??????????????????????????????????? |
???????????????? +------------------------------------+
??????? BF800000 |??????????????????????????????????? |
???????????????? |?? MM_SESSION_SPACE & Session WSLs? |
???????????????? |????????????? (4MB)???????????????? |
???????????????? |??????????????????????????????????? |
???????????????? +------------------------------------+
??????? BF400000 |??????????????????????????????????? |
???????????????? |?? Mapped views for this session??? |
???????????????? |???? (20MB by default, but is?????? |
???????????????? |????? registry configurable)??????? |
???????????????? |??????????????????????????????????? |
???????????????? +------------------------------------+
??????? BE000000 |??????????????????????????????????? |
???????????????? |?? Paged pool for this session????? |
???????????????? |???? (16MB by default, but is?????? |
???????????????? |????? registry configurable)??????? |
???????????????? |??????????????????????????????????? |
??????? BD000000 +------------------------------------+


第四部分:函數返回后


1: kd> dx -r1 (*((ntkrnlmp!_LIST_ENTRY *)0xbf7f0010))?? ??? ??? ??? ?
(*((ntkrnlmp!_LIST_ENTRY *)0xbf7f0010))???????????????? [Type: _LIST_ENTRY]
??? [+0x000] Flink??????????? : 0x895ea304 [Type: _LIST_ENTRY *]
??? [+0x004] Blink??????????? : 0x89544304 [Type: _LIST_ENTRY *]
1: kd> dx -r1 ((ntkrnlmp!_LIST_ENTRY *)0x895ea304)
((ntkrnlmp!_LIST_ENTRY *)0x895ea304)???????????????? : 0x895ea304 [Type: _LIST_ENTRY *]
??? [+0x000] Flink??????????? : 0x895140d4 [Type: _LIST_ENTRY *]
??? [+0x004] Blink??????????? : 0xf79b1010 [Type: _LIST_ENTRY *]
1: kd> dx -r1 ((ntkrnlmp!_LIST_ENTRY *)0x89544304)
((ntkrnlmp!_LIST_ENTRY *)0x89544304)???????????????? : 0x89544304 [Type: _LIST_ENTRY *]
??? [+0x000] Flink??????????? : 0xf79b1010 [Type: _LIST_ENTRY *]
??? [+0x004] Blink??????????? : 0x895140d4 [Type: _LIST_ENTRY *]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79899.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年消防設施操作員考試題庫及答案

一、判斷題 31.消防用水不作他用的技術措施應每季度進行檢查,若發現故障應及時進行處理。() 答案:錯誤 解析:本題考查的是消防水池、高位消防水箱的保養方法。每月檢查消防用水不作他用的技術措施,發現故…

Ray開源程序 是用于擴展 AI 和 Python 應用程序的統一框架。Ray 由一個核心分布式運行時和一組用于簡化 ML 計算的 AI 庫組成

?一、軟件介紹 文末提供程序和源碼下載 Ray開源程序 是用于擴展 AI 和 Python 應用程序的統一框架。Ray 由一個核心分布式運行時和一組用于簡化 ML 計算的 AI 庫組成 二、Ray AI 庫的更多信息 數據:適用于 ML 的可擴展數據集訓練:分布式訓練Tune&…

軟件設計師-軟考知識復習(3)

在磁盤上存儲數據的排列方式會影響I/O服務的總時間。假設每個磁道被劃分成10個物理塊,每個物理塊存放1個邏輯記錄。邏輯記錄R1,R2…R10存放在同一個磁道上,記錄的排列從1到10。 假定磁盤的旋轉速度為10ms/周,磁頭當前處在R1的開始處。若系統…

Unity Editor 擴展:查找缺失的 Image Sprite

在 Unity 開發過程中,缺失的 Sprite 引用(特別是在 UI 元素上)可能導致程序運行時出現問題,尤其是在使用 Image 組件時。當你擁有多個 Prefab 和大量的 UI 資源時,手動檢查每個 Prefab 是否缺失了 Source Image 變得十…

在VTK中使用VTKCamera

文章目錄 概要Cpp代碼概要 在VTK(Visualization Toolkit)中,vtkCamera 類用于控制三維場景中相機的視角。相機決定了你從哪個角度和位置觀察三維場景。使用 vtkCamera 的一般步驟包括創建相機對象、配置相機參數、將相機設置為渲染器的活動相機,以及更新相機視圖。 Cpp代…

【Docker系列】使用格式化輸出與排序技巧

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

臨床智能體AI與環境感知AI的融合:基于python的醫療自然語言處理深度分析

引言 醫療領域的數智化進程正以前所未有的速度推進,人工智能技術的應用尤為顯著。隨著大型語言模型(LLMs)的迅猛發展,醫療AI已從簡單的輔助工具升級為復雜的智能體系統。臨床智能體AI與環境感知AI的融合代表了醫療AI的最新發展方向,為重塑醫療運營自然語言處理提供了全新…

JAVA SE(9)——多態

1.多態的概念&作用 多態(Polymorphism)是面向對象編程的三大基本特性之一(封裝和繼承已經講過了),它允許不同類的對象對同一消息做出不同的響應。具體來說,多態允許基類/父類的引用指向派生類/子類的對象(向上轉型…

GPS定位方案

目錄 一、常用的GPS定位方案包括: 二、主流品牌及熱銷型號 三、常用GPS算法及核心邏輯: 一、基礎定位算法 二、高精度算法 三、輔助優化算法 四、信號處理底層算法 四、基本原理(想自己寫算法的琢磨一下原理) 一、常用的GP…

PCIe - ZCU106(RC) + KU5P(EP) + 固化

目錄 1. 簡介 1.1 Data Mover 1.2 描述符 2. ZCU102 2.1 Ubuntu OS 2.2 USB Host 2.2.1 連接拓撲 2.2.2 設備類型 2.2.3 USB 跳帽設置 2.3 無線網卡 2.4 PCIe Info 2.4.1 Diagram 2.4.2 lspci -tv 2.4.3 lspci -v 2.4.2.1 設備基本信息 2.4.2.2 控制與狀態寄存…

精益數據分析(43/126):媒體網站商業模式的盈利與指標解析

精益數據分析(43/126):媒體網站商業模式的盈利與指標解析 在創業和數據分析的學習旅程中,我們不斷探索各種商業模式的奧秘,今天讓我們一同深入《精益數據分析》,聚焦媒體網站商業模式,剖析其盈…

Android數據庫全棧開發實戰:Room+SQLCipher+Hilt企業級應用構建

簡介 在移動應用開發中,數據庫作為數據存儲的核心組件,其安全性和性能對企業級應用至關重要。本文將從零開始,全面講解Android數據庫開發的最新技術,包括Room框架的深度使用、SQLCipher加密數據庫的實現、Hilt依賴注入的集成以及前后端數據同步的完整方案。通過一個加密任…

HarmonyOS 5.0 低時延音視頻開發??

大家好,我是 V 哥。 在HarmonyOS 5.0的開發中,支持低時延音視頻開發,為了確保語法正確, V 哥以下代碼符合HarmonyOS NEXT API 14的規范。為了方便初學者更好入門,V 哥伙同2位小伙伴花了1年時間,搞了三本鴻蒙…

微調大模型如何準備數據集——常用數據集,Alpaca和ShareGPT

微調大模型如何準備數據集——常用數據集,Alpaca和ShareGPT 數據集準備常用數據集自定義數據集AlpacaShareGPT數據集準備 常用數據集 預訓練數據集 Wiki Demo (en)RefinedWeb (en)RedPajama V2 (en)Wikipedia (en)Wikipedia (zh)Pile (en)

2025年OpenAI重大架構調整:資本與使命的再平衡

目錄 前言 一、調整核心:三重架構的重構 1.1 控制權的重新錨定 1.2 營利部門的角色轉型 1.3 資金池的重新配置 二、調整動因:三重矛盾的破解 2.1 資金需求與融資限制的沖突 2.2 商業競爭與使命純度的博弈 2.3 內部治理與外部監管的張力 三、產…

GD32/STM32 ADC/DMA使用指南

首先我們對ADC及DMA的基礎知識作一下簡單介紹。 一、 GD32/STM32 ADC模塊的核心要點 一)、ADC基礎特性 ?12位逐次逼近型? GD32/STM32 ADC為12位分辨率,最大量化值為4095(對應3.3V參考電壓),支持0-3.3V模擬輸入范…

Linux(十四)進程間通信(IPC),管道

一、進程間通信 (一)系統介紹進程間通信 進程間通信(IPC)介紹 小編插入的這篇文章詳細介紹了進程間通信的一些內容,大家可以一起學習。 (二)進程間通信的方法 1、管道 2、信號量 3、共享…

使用Homebrew下載配置git和連接GitHub(Mac版)

本文詳細介紹了在M系列Mac上安裝Homebrew并配置Git的過程,包括git的下載、設置全局用戶名和郵箱、生成SSH密鑰、添加GitHubSSH密鑰以及終端驗證。這些步驟有助于用戶順利進行協同開發。 一、下載git 1、終端輸入一下命令 brew install git2、這時下載完成 二、配…

懸崖邊的攝影牧歌

在云霧繚繞的懸崖邊,一場獨屬于自然與光影的邂逅悄然上演。 攝影師佇立于此,身旁是一群靈動的羊。他架起相機,眼神專注而熾熱,仿佛要將這天地間的一切都收納進小小的取景器。懸崖陡峭,巖石冷峻,卻因羊群的潔…

Linux環境基礎與開發工具使用

1. Linux編譯器vim 1.1 vim的基本概念講解 vim有很多種模式,我們初學者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。 命令/正常模式(Normal mode) …