摘要: 对于初识2中提出的问题,先来看下内核内存分布kd> dd MmSessionPoolSize l180c394b4 00400000kd> dd MiSessionPoolStart l180c394cc bc000000kd> dd MiSessionViewStart l180c394c0 bc400000现在还看下那个全局变量MmSessionSpacekd> dd mmsessionspace l180c394e8 bf7f0000kd> !address bf7f0000 bc400000 - 03400000 Usage KernelSpaceU... 阅读全文
posted @ 2012-07-01 12:49 kkindof 阅读(1775) 评论(0) 推荐(0) 编辑
摘要: 前置知识:同一个Session的进程的eprocess->session指向的值都是一样在1中,我们知道smss.exe创建新的session,然后启动新的csrss.exe和winlogon.exe。它的管理是这样的//先看一个宏定义#define SESSION_GLOBAL(_Session) (_Session->GlobalVirtualAddress)SessionGlobal = SESSION_GLOBAL (MmSessionSpace);在smss.exe创建新的session时,由内核函数MiSessionCreateInternal()实现的:NTSTATU 阅读全文
posted @ 2012-07-01 12:09 kkindof 阅读(1332) 评论(0) 推荐(0) 编辑
摘要: PS:下面测试环境均为win 2003正常启动后,smss.exe这个session管理组件会创建2个进程,csrss.exe(子系统)和winlogon.exe,这2个进程属于session 0但smss.exe却不属于任何一个session,这是怎么回事呢?一般我们启动程序后,会看见子进程和父进程属于同一个session跟踪后,发现原来smss.exe在启动上述2个进程之前(这个过程是发生在smss!smpLoaddataFromRegistry()函数中),为了说明方便,下面用伪代码演示smss!smpLoaddataFromRegistry(){}loadsubsystem(){1.会 阅读全文
posted @ 2012-07-01 00:58 kkindof 阅读(1889) 评论(0) 推荐(0) 编辑