open mailslot in another session

Тема в разделе "WASM.WIN32", создана пользователем 63F45EF45RB65R6VR, 3 дек 2011.

  1. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    Всем привет в проге патчере создаю сервер почтового ящика
    Код (Text):
    1. hServerSlot = CreateMailslot("\\\\.\\mailslot\\{4F2AFC3B-636D-469a-8131-172B0815C580}", 0,
    2.         MAILSLOT_WAIT_FOREVER, NULL);
    потом происходит инжект DLL в процесс запущенный от другого юзера
    когда DLL пытается открыть ящик для записи то получает ERROR_ACCESS_DENIED
    Код (Text):
    1. hSlot = CreateFile("\\\\.\\mailslot\\{4F2AFC3B-636D-469a-8131-172B0815C580}",
    2.         GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    как открыть ящик для записи ? для одной сессии все прекрасно работает.
    спасибо
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    63F45EF45RB65R6VR
    Это очень сложнай трюк и требует специального ритуала + GPE приват версии (самой самой приват, которой даже нет у автора ... )
    Еще нужен бубен и много подки с апельсиновыми корками ... И кричать всякие мантры ... Вообще очень долго расписывать что именно нужно, но думаю куда копать ясно..

    Есть еще один способ , тот который автор топика то ли не почитал так как ему лень проще понапрягать кого то ... То ли бан получил на документацию ... То ли религия. Это отстанится загадкой, просто еще одной загадкой для это мира...

    HANDLE WINAPI CreateMailslot(
    __in LPCTSTR lpName,
    __in DWORD nMaxMessageSize,
    __in DWORD lReadTimeout,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );


    LPSECURITY_ATTRIBUTES lpSecurityAttributes - зачем нужен этот параметр?

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa365147%28v=vs.85%29.aspx
     
  3. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
     
  4. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    63F45EF45RB65R6VR
    Откуда у вас это ? правильно будет так:)
     
  5. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    это из мсдн который шел на диске с msvc 2008 странно а в документации по Вашей ссылке этого не увидел надо попробовать
     
  6. 63F45EF45RB65R6VR

    63F45EF45RB65R6VR New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2011
    Сообщения:
    70
    да все правильно надо было указать SECURITY_ATTRIBUTES в мсдн (по крайней мере в моем) оказалась неверная информация насчет этого параметра этот код решил проблему с открытием в другой сессии
    Код (Text):
    1. BYTE  sd[SECURITY_DESCRIPTOR_MIN_LENGTH];
    2. SECURITY_ATTRIBUTES  sa;
    3.  
    4. sa.nLength = sizeof(sa);
    5. sa.bInheritHandle = TRUE;
    6. sa.lpSecurityDescriptor = &sd;
    7.  
    8. InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
    9. SetSecurityDescriptorDacl(&sd, TRUE, (PACL) 0, FALSE);
    10.  
    11. hServerSlot = CreateMailslot("\\\\.\\mailslot\\{4F2AFC3B-636D-469a-8131-172B0815C580}", 0,
    12.         MAILSLOT_WAIT_FOREVER, &sa);
    всем спасибо