TermSrvPrivate 11F25515-C879-400A-989E-B074D5F092FE version 1.0
6 methods:
- RpcGetUserToken
- RpcConnectTerminal
- RpcSystemShutdownStarted
- RpcGetRequestForWinlogon
- RpcReportWinlogonReply
- RpcGetReconnectId
2 methods:
- RpcBroadcastSystemMessage
- RpcSendWindowMessage
0x10 methods:
- RpcOpenSession
- RpcCloseSession
- RpcConnect
- RpcDisconnect
- RpcLogoff
- RpcGetUserName
- RpcGetTerminalName
- RpcGetState
- RpcIsSessionDesktopLocked
- RpcShowMessageBox
- RpcGetTimes
- RpcGetSessionCounters
- RpcGetSessionInformation
- RpcSwitchToServicesSession
- RpcRevertFromServicesSession
- RpcGetLoggedOnCount
4 methods:
- RpcWaitForSessionState
- RpcRegisterAsyncNotification
- RpcWaitAsyncNotification
- RpcUnRegisterAsyncNotification
0xa methods:
- RpcOpenEnum
- RpcCloseEnum
- RpcFilterByState
- RpcFilterByCallersName
- RpcEnumAddFilter
- RpcGetEnumResult
- RpcFilterBySessionType
- RpcFilterByLicenseType
- RpcGetSessionIds
- RpcGetEnumResultEx
Подскажи пожалуйста, нет ли у тебя какой информации по интерфейсам IGlassTerminal, ITSSession, ISessionList в lsm.exe Windows 7?
ОтветитьУдалитьЯ вижу что вызов метода этого интерфейса идет в отладчике вот так:
kd> k
ChildEBP RetAddr
00b5ee04 75b4fc8f lsm!CTSSession::Start
00b5ee20 75bb4c53 RPCRT4!Invoke+0x2a
00b5f228 755ed936 RPCRT4!NdrStubCall2+0x2d6
00b5f270 755ed9c6 ole32!CStdStubBuffer_Invoke+0xb6
00b5f2b8 755edf1f ole32!SyncStubInvoke+0x3c
00b5f304 7550213c ole32!StubInvoke+0xb9
00b5f3e0 75502031 ole32!CCtxComChnl::ContextInvoke+0xfa
00b5f3fc 755ea754 ole32!MTAInvoke+0x1a
00b5f42c 755edcbb ole32!AppInvoke+0xab
00b5f50c 755ea773 ole32!ComInvokeWithLockAndIPID+0x372
00b5f558 75b4f34a ole32!ThreadInvoke+0x302
00b5f594 75b4f4da RPCRT4!DispatchToStubInCNoAvrf+0x4a
00b5f5ec 75b4f3c6 RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x16c
00b5f614 75b50cef RPCRT4!RPC_INTERFACE::DispatchToStub+0x8b
00b5f64c 75b4f882 RPCRT4!RPC_INTERFACE::DispatchToStubWithObject+0xb2
00b5f698 75b4f7a4 RPCRT4!LRPC_SCALL::DispatchRequest+0x23b
00b5f6b8 75b4f763 RPCRT4!LRPC_SCALL::QueueOrDispatchCall+0xbd
00b5f6d4 75b4f5ff RPCRT4!LRPC_SCALL::HandleRequest+0x34f
00b5f708 75b4f573 RPCRT4!LRPC_SASSOCIATION::HandleRequest+0x144
00b5f740 75b4ee4f RPCRT4!LRPC_ADDRESS::HandleRequest+0xbd
00b5f7b8 75b4ece7 RPCRT4!LRPC_ADDRESS::ProcessIO+0x50a
00b5f7c4 75b51357 RPCRT4!LrpcServerIoHandler+0x16
00b5f7d4 76eed3c7 RPCRT4!LrpcIoComplete+0x16
00b5f7fc 76ef0778 ntdll!TppAlpcpExecuteCallback+0x1c5
00b5f964 77061194 ntdll!TppWorkerThread+0x5a4
00b5f970 76f1b495 kernel32!BaseThreadInitThunk+0xe
00b5f9b0 76f1b468 ntdll!__RtlUserThreadStart+0x70
00b5f9c8 00000000 ntdll!_RtlUserThreadStart+0x1b
Но не понимаю кто его вызывает (это еще ладно) но как мне его вызвать самому?
я не понял вопроса
ОтветитьУдалитьты что именно хочешь вызвать ?
если именно описанные rpc интерфейсы - то через протокол ncalrpc на порт LSMApi (скорее всего там авторизация потребуется)
если ole interfaces - то все как обычно - создаешь объект по CLSID через ClassFactory и все
Соорудил пока такой код:
ОтветитьУдалитьDEFINE_GUID(CLSID_PSFactoryBuffer, 0x02E6EC4C,0x96E4,0x42E8,0x0B5,0x33,0x33,0x69,0x16,0x0A0,0x08,0x7D);
DEFINE_GUID(IID_ITSSession, 0xA1B7DE7A, 0x4E77, 0x43DB, 0x0AE, 0x78, 0x96, 0x0FC, 0x18, 0x2F, 0x0ED, 0x4A);
int _tmain(int argc, _TCHAR* argv[])
{
CoInitializeEx(NULL, COINIT_MULTITHREADED);
HRESULT hr;
PVOID pITSSession;
hr = CoCreateInstance ( CLSID_PSFactoryBuffer, // CLSID of coclass
NULL, // not used - aggregation
CLSCTX_INPROC_SERVER ,
IID_ITSSession, // IID of interface
(void**) &pITSSession ); // Pointer to our interface pointer
if ( SUCCEEDED ( hr ) )
{
}
else
{
}
CoUninitialize();
}
возвращает E_NOINTERFACE. Может быть есть какие идеи?
есть
ОтветитьУдалитькаком модуле живет ITSSession ?
если в отдельной .dll - приведенный кусок должен работать
если в .exe - то нужно вместо CLSCTX_INPROC_SERVER использовать CLSCTX_LOCAL_SERVER
Также еще проверь правильность всех использованных IIDs