0

Windows Subsystem For Linux(Win10中的新技术)使用LxssUserSession服务。此服务未记录,但它用作 WSL 的 API(bash.exe使用此服务运行 ELF)。如我所见,它是 COM 的一部分:CLSID注册表中有AppID. 并AppIDLocalService记录:LxssUserSession

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

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

bash.exe!= /bin/bashbash.exe是连接到LxssUserSession并要求它运行的 PE(Win64 bin 应用程序) /bin/bash(这是​​ ELF(Linux 应用程序!)。bash.exe最好称为“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 进程”启动(参见此处https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for -linux-概述/)。两者都没有记录,但我相信我可以以某种方式使用 COM,但是我收到了我作为第一个链接提供的错误:(

4

2 回答 2

2

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

于 2016-05-16T14:12:52.900 回答
0

我只是在做同样的项目。我所做的是对“bash.exe”进行逆向工程,看看它是如何工作的。目前,我可以创建一个保险LxssUserSession并在其中调用一些方法。但它仍然不完整。你可以在这里找到它的来源。

于 2016-08-09T17:33:22.140 回答