доступ к оконной станции пользователя

Тема в разделе "WASM.NT.KERNEL", создана пользователем pashe4ka13, 28 окт 2010.

  1. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Вот код загрузки сервиса:
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3. include 'c:\fasm\include\win32ax.inc'
    4. include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\MACRO\if.inc'
    5.  
    6. define SC_MANAGER_ALL_ACCESS       0xF003F
    7. define SC_MANAGER_CREATE_SERVICE   0x0002
    8. define SERVICE_ERROR_IGNORE    00000000h
    9. define SERVICE_AUTO_START      00000002h
    10. define SERVICE_WIN32_SHARE_PROCESS 00000020h
    11. define SERVICE_INTERACTIVE_PROCESS 00000100h
    12. define SERVICE_ALL_ACCESS      000F01FFh
    13. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    14. ;                                          К О Д                                                    
    15. ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    16. section '.data' data readable writeable
    17. lpBinaryPathName db 'C:\Users\Павел\AppData\Roaming\Opera\Opera\Window.BMP.Skin.Demo\zapusk_exe.EXE', 0
    18. qwe db 'SYSTEM',0
    19. comen db 'interaktiv servises',0
    20. serviss db 'сервис успешно запущен',0
    21. regiss db 'regiss',0
    22. hSCManager dd ?
    23. hService dd ?
    24. no_reg db 'Сервес не запущен',0
    25. no_men db 'Не удалось открыть менеджер сервисов',0
    26. oshbka dd ?
    27. section '.code' code readable executable
    28. start:
    29.     invoke OpenSCManager, NULL, NULL,SC_MANAGER_ALL_ACCESS
    30.     .if eax <> NULL
    31.     mov [hSCManager], eax
    32.     invoke CreateService, [hSCManager], regiss , comen,\
    33.            SERVICE_ALL_ACCESS,  SERVICE_WIN32_SHARE_PROCESS+SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START,\
    34.            SERVICE_ERROR_IGNORE,lpBinaryPathName, NULL, NULL, NULL, NULL, NULL
    35.     .if eax <> NULL
    36.         mov [hService], eax
    37.         invoke StartService, [hService], 0, NULL
    38.         invoke MessageBox, NULL,serviss, NULL, MB_ICONSTOP
    39.         invoke DeleteService, [hService]
    40.         invoke CloseServiceHandle,[hService]
    41.     .else
    42.         invoke MessageBox, NULL,no_reg,oshbka, MB_ICONSTOP
    43.     .endif
    44.     invoke CloseServiceHandle, [hSCManager]
    45.     .else
    46.     invoke MessageBox, NULL,no_men,NULL,MB_ICONSTOP
    47.     .endif
    48.     invoke ExitProcess, 0
    49.  section '.idata' import data readable writeable
    50.   library kernel32,'kernel32.dll',\
    51.       user32,'user32.dll',\
    52.       gdi32,'gdi32.dll',\
    53.       advapi32,'advapi32.dll'
    54.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\kernel32.inc'
    55.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\user32.inc'
    56.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\gdi32.inc'
    57.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\advapi32.inc'
    58.  
    59. вот код сервиса который  должен показать мне токен:
    60.  
    61. format PE GUI 4.0
    62. entry DriverEntry
    63. include 'c:\fasm\include\win32a.inc'
    64.  
    65. section '.data' data readable writeable
    66. сессия db 'активная_сессия '
    67. .активная_сессия dd ?
    68. токен db 'токен '
    69. .токен_юзера dd ?
    70.  
    71.  
    72. section '.code' code readable executable
    73.   DriverEntry:
    74.     invoke  WTSGetActiveConsoleSessionId
    75.     add   eax,0x30
    76.     mov  сессия.активная_сессия,eax
    77.     invoke  WTSQueryUserToken,сессия.активная_сессия,токен.токен_юзера
    78.     add [токен.токен_юзера],0x30
    79.     invoke  MessageBox,HWND_DESKTOP,сессия,токен,MB_OK
    80.     invoke ExitProcess, 0
    81.  
    82.  
    83. section '.idata' import data readable writeable
    84.   library kernel32,'kernel32.dll',\
    85.       user32,'user32.dll',\
    86.       gdi32,'gdi32.dll',\
    87.       wtsapi32,'wtsapi32.dll'
    88.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\kernel32.inc'
    89.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\user32.inc'
    90.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\gdi32.inc'
    91.   include 'C:\Users\Павел\Documents\fasmw16924\INCLUDE\API\wtsapi32.inc'
    но в итоге токен=0 В чём причина?
     
  2. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    WTSQueryUserToken завершается ошибкой. Код ошибки 2. Что это за ошибка?
     
  3. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    http://msdn.microsoft.com/en-us/library/ms681382%28v=VS.85%29.aspx
     
  4. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    ziral2088
    Спасибо. Правда я не понял причем тут ERROR_FILE_NOT_FOUND 0х2. Проблема решилась, я очень невнимателен
    section '.code' code readable executable
    DriverEntry:
    invoke WTSGetActiveConsoleSessionId
    add eax,0x30 <-------------------------------------------------------------------- Вот из-за чего проблема была
    mov сессия.активная_сессия,eax
    invoke WTSQueryUserToken,сессия.активная_сессия,токен.токен_юзера
    add [токен.токен_юзера],0x30
    invoke MessageBox,HWND_DESKTOP,сессия,токен,MB_OK
    invoke ExitProcess, 0
     
  5. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    В общем как я не пытаюсь ни чего пока так и не получилось. По числу просмотров вижу, что тема вызывает интерес. Я так понял, что в одной сессии всё таки могут находиться два интерактивных пользователя. csrss.exe запущено пользователем SYSTEM в той же сессии, что и все процессы пользователя. Я дезасемблировал csrss.exe и подгружаемые к нему библиотеки, а так же smss.exe. Они используют очень много api-функций по которым нет документации. По крайней мере я её не нашел. Если кто-то знает где найти по ним инфу подскажите. Ну и вообще может у кого какие идеи есть?
     
  6. ziral2088

    ziral2088 New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2009
    Сообщения:
    283
    Запуск в 1 сесии процессов от разных пользователей - возможен. Но такой код стоит денюжку.
    Копай в сторону NtCreateToken.
     
  7. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    ziral2088
    Интересно в какой сумме? Хотя, с моей заработной платой водителя в городской больнице, в провинциальном городишке- это действительно чистое любопытство. В общем буду копать. Мне только скажите где? Я ни как не могу разобраться со всеми этими тредами и токенами. Где можно, что нибудь о них почитать?