SmLoadDeferedSubsystemApi

SmLoadDeferedSubsystemApi 借用进程启动??parent handle hack?

switch (SmApiMsg->ApiNumber) {
case SmExecPgmApi :
Status = (SmpApiDispatch[SmApiMsg->ApiNumber])(
SmApiMsg,
ClientContext,
ConnectionPort);
break;

case SmLoadDeferedSubsystemApi :
Status = (SmpApiDispatch[SmApiMsg->ApiNumber])(
SmApiMsg,
ClientContext,
ConnectionPort);

 

PSMAPI SmpApiDispatch[SmMaxApiNumber] = {
SmpCreateForeignSession,
SmpSessionComplete,
SmpTerminateForeignSession,
SmpExecPgm,
SmpLoadDeferedSubsystem
};

 

键名Optional是属于defer类的subsytem,smss.exe取出值Posix,再读取Posix键的值,发现是psxss.exe。所以如果上面的方法成功,就可以发命令让smss.exe进程来启动psxss.exe

Required是必须类,所以现在windows一般都是取出windows键的值csrss.exe来启动,debug也是,不过觉的都是为空。

Kmode是smss.exe读取出来使用NtSetSystemInformation()函数功能号SystemExtendServiceTableInformation完成加载的

 

 

另外笔记下,smss.exe是最早的用户进程(在内核Phase1Initxx阶段创建,smss.exe这个进程名没法配置,硬编码在代码里的),smss.exe启动2个进程(其实还有1个,就是autocheck.exe,不过启动后就退出了)分别是:winlogon.exe和csrss.exe

其实这2个进程都是可以配置的,csrss.exe在上面截图已经看到了,就是在那配置。而winlogon.exe是smss.exe是在Session Manager下找不到Excute子键时默认启动的进程,

暂时还不晓得Excute是怎么配置的。

 

****不一定全对,只是粗糙看了下泄露的旧源码啥的,

posted @ 2012-06-30 15:56  kkindof  阅读(324)  评论(0编辑  收藏  举报