2016-05-14 8 views
0

Windows-Subsystem für Linux (neue Technologie in Win10) verwendet LxssUserSession Service. Dieser Dienst ist nicht dokumentiert, wird jedoch als API für WSL verwendet (bash.exe verwendet diesen Dienst zum Ausführen von ELFs). Wie ich sehen kann, ist es Teil von COM: Es gibt CLSID Datensatz in der Registrierung, die AppID hat. Und AppID hat LocalService Datensatz: LxssUserSession.Erstellen von Service-basierten COM-Instanz von CLSID

Ich bin nicht vertraut mit COM, aber wenn ich es richtig verstehe, sollte COM-Komponente von diesem Dienst unterstützt werden. Ich bin nicht in der Lage, eine Instanz dieser COM aus dem Skript zu erstellen, da es keine ProgID gibt, aber ich habe versucht, sie mit OleView zu instanziieren. Wie auch immer, es meldet, dass CoCreateInstance Fehler zurückgegeben. Wie kann dieser Fehler behoben werden? Könnte es sein, dass COM-Komponente nicht erstellt und für etwas anderes verwendet werden kann (d. H. Es gibt eine andere Schnittstelle). Ist es generell möglich, mit undokumentierten COM-Komponenten zu arbeiten? Kann ich bash.exe Anrufe auf diesen Dienst verfolgen

Einige Hintergrundinformationen (so etwas wie logger.exe oder ltrace aber für COM?): Hier Fehler Ich erhalte: http://s32.postimg.org/wpthro5kl/error.png

bash.exe = /bin/bash. bash.exe ist PE (Win64 bin app), die auf LxssUserSession verbindet und fragt es /bin/bash zu laufen (die ELF ist (Linux-App!). bash.exe besser als "WLS.exe" ist, aber aus irgendeinem Grund sie es bash.exe genannt.
sehen Sie hier: https://msdnshared.blob.core.windows.net/media/2016/04/LXSS-diagram-1024x472.jpg und hier ist seine headres http://s32.postimg.org/khjjf81th/bash.png Also, ich bin sicher, dass bash.exe COM LxssUserSession für die Verbindung verwendet und LxssUserSession verwendet Pico (Psp ..) Funktionen ELF zu starten als „Pico-Prozess“ (siehe hier https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/) .. Beide sind undokumentiert, aber ich glaube, ich kann COM wie, aber ich bekomme Fehler, die ich als erste Link zur Verfügung gestellt :(

+0

Ich habe Fehler und Kommentare zu Bash, siehe neue Version von mein Beitrag – user996142

+0

Danke, das ist sehr interessant, und macht viel mehr Sinn als die Beschreibungen der WSL, die ich ursprünglich gelesen habe.So wahrscheinlich ein echtes COM-Thema, nichts mit WSL an sich zu tun.KOMMATIK habe ich so wohl nie können Es tut mir leid, aber eine Google-Suche nach dem Fehlercode brachte einige Res Dies deutet darauf hin, dass Sie möglicherweise CoSetProxyBlanket aufrufen müssen. –

Antwort

2

Ich konnte Objekt mitinstanziierendurch Festlegen der standardmäßigen Identitätswechselebene auf "Impersonate" in der Komponentendienste-Konfiguration (möglicherweise müssen Sie einen Neustart durchführen). Ich kann jetzt ILxssSession Schnittstelle sehen. Aber da es keine IDispatch und keinen TLB gibt, gibt es nichts, was ich tun kann: Methoden sind mir unbekannt (

0

Ich mache gerade die gleiche Art von Projekt. Was ich mache ist Reverse Engineering "bash.exe", um zu sehen, wie es funktioniert. Zur Zeit kann ich eine Versicherung von LxssUserSession erstellen und einige Methoden aufrufen. Aber es ist immer noch nicht vollständig. Sie finden es Quelle here.