适用于Linux的Windows子系统(Win10中的新技术)使用LxssUserSession
服务。此服务未记录,但它用作WSL的API(bash.exe
使用此服务运行ELF)。正如我所看到的,它是COM的一部分:注册表中有CLSID
条记录AppID
。 AppID
有LocalService
条记录:LxssUserSession
。
我不熟悉COM,但如果我理解正确的话,应该有这个服务支持的COM组件。我无法从脚本创建此COM的实例,因为没有ProgID,但我尝试使用OleView
实例化它。然而,它报告CoCreateInstance
返回错误。如何调试此错误?是不是可以创建COM组件并将其用于不同的东西(即有一些其他接口)。通常可以使用未记录的COM组件吗?我可以跟踪bash.exe
对此服务的调用(类似logger.exe
或ltrace
,但对于COM?)
一些背景: 这是我得到的错误:http://s32.postimg.org/wpthro5kl/error.png
bash.exe
!= /bin/bash
。 bash.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连接到LxssUserSession
,LxssUserSession
使用Pico(Psp ..)函数启动ELF作为" pico process" (见https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/)。
两者都没有记录,但我相信我可以使用COM一些方法,但我收到的错误是我提供的第一个链接:(
答案 0 :(得分:2)
我可以通过将默认模拟级别设置为" Impersonate"来使用OleView
来实例化对象。在组件服务配置中(您可能需要重新启动)。我现在可以看到ILxssSession
界面。但由于没有IDispatch
而没有TLB,我无能为力:我不知道方法(
答案 1 :(得分:0)
我正在做同样的项目。我所做的是逆向工程“bash.exe”,看看它是如何工作的。目前,我可以创建LxssUserSession
的保险并在其中调用一些方法。但它仍然没有完成。您可以找到它来源here。