从CLSID

时间:2016-05-14 00:19:39

标签: windows com ole windows-subsystem-for-linux

适用于Linux的Windows子系统(Win10中的新技术)使用LxssUserSession服务。此服务未记录,但它用作WSL的API(bash.exe使用此服务运行ELF)。正如我所看到的,它是COM的一部分:注册表中有CLSID条记录AppIDAppIDLocalService条记录:LxssUserSession

我不熟悉COM,但如果我理解正确的话,应该有这个服务支持的COM组件。我无法从脚本创建此COM的实例,因为没有ProgID,但我尝试使用OleView实例化它。然而,它报告CoCreateInstance返回错误。如何调试此错误?是不是可以创建COM组件并将其用于不同的东西(即有一些其他接口)。通常可以使用未记录的COM组件吗?我可以跟踪bash.exe对此服务的调用(类似logger.exeltrace,但对于COM?)

一些背景: 这是我得到的错误:http://s32.postimg.org/wpthro5kl/error.png

bash.exe!= /bin/bashbash.exe是PE(Win64 bin应用程序),它连接到LxssUserSession并要求它运行/bin/bash(这是ELF(linux app!)。bash.exe最好被称为&{ #34; WLS.exe",但由于某种原因,他们称之为bash.exe 请参阅此处:https://msdnshared.blob.core.windows.net/media/2016/04/LXSS-diagram-1024x472.jpg,此处是标题http://s32.postimg.org/khjjf81th/bash.png。 因此,我确信bash.exe使用COM连接到LxssUserSessionLxssUserSession使用Pico(Psp ..)函数启动ELF作为" pico process" (见https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/)。 两者都没有记录,但我相信我可以使用COM一些方法,但我收到的错误是我提供的第一个链接:(

2 个答案:

答案 0 :(得分:2)

我可以通过将默认模拟级别设置为" Impersonate"来使用OleView来实例化对象。在组件服务配置中(您可能需要重新启动)。我现在可以看到ILxssSession界面。但由于没有IDispatch而没有TLB,我无能为力:我不知道方法(

答案 1 :(得分:0)

我正在做同样的项目。我所做的是逆向工程“bash.exe”,看看它是如何工作的。目前,我可以创建LxssUserSession的保险并在其中调用一些方法。但它仍然没有完成。您可以找到它来源here