Кто запустил прогу

Тема в разделе "WASM.WIN32", создана пользователем vg, 23 сен 2007.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как определить кто запустил программу: система или пользователь?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а в чем различия
     
  3. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    n0name
    Не совсем правильно задан вопрос, и даже не знаю как правильнее его задать, но в этом определении я бы сказал, что winlogon/lsass запущены системой, а fasmw, iexplore пользователем.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    если родитель explorer.exe или его потомок - то пользователем..
     
  5. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    По юзеру определять - если текущий, то пользователь иначе система. У всех сервисов или системных процессов пользователь - "NT AUTHORITY\SYSTEM" или "NT AUTHORITY\LOCAL SERVICE". Хотя конечно я осознаю, что сервис можно запустить с правами любой учотки.
     
  6. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Great
    Имя парента нельзя узнать если он не существует в данный момент.
     
  7. razor

    razor Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    40
    Mental_Mirror
    еще NT AUTHORITY\NETWORK SERVICE
     
  8. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как это определить?
     
  9. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
  10. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    Сначала получаешь SID процесса.
    Потом LookupAccountSid

    P.S. Поиск рулит http://www.wasm.ru/forum/viewtopic.php?id=16080
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Mental_Mirror
    если постараться, то в >=XP можно. EPROCESS убитого процесса не удаляется почемуто, а только помечается как удаленный (EPROCESS->ProcessExiting = 1), но остается в двусвязанном списке PsActiveProcessList.
    Однако, NtQuerySystemInformation исключает такие процессы из перечисления, когда возвращает список процессов. Но фактически, объект существует.
     
  12. EP_X0FF

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    А если эксплорер породит калькулятор, кто тогда кто с вашими SID? Ответ ТС - только по ParentID .
     
  13. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Получается так
    Код (Text):
    1. hToken           DWORD ?
    2. buf              db 1024 dup(?)
    3. tu_size          DWORD ?
    4. sch_accountname  db 255 dup(?)
    5. sch_domainname   db 255 dup(?)
    6. sid_name_use     db 255 dup(?)
    7.  
    8.      invoke GetCurrentProcess
    9.      mov    ecx,eax
    10.      invoke OpenProcessToken,ecx,TOKEN_QUERY,addr hToken
    11.      or     eax,eax
    12.      jz     error
    13.      invoke GetTokenInformation,hToken,TokenUser,addr buf,1024,addr tu_size
    14.      or     eax,eax
    15.      jz     error
    16.      invoke LookupAccountSid,0,addr buf,addr sch_accountname,sizeof sch_accountname,addr sch_domainname,sizeof sch_domainname,addr sid_name_use
    17. error:
    18.      invoke CloseHandle,hToken
    19.      invoke MessageBox,hwnd,addr sch_accountname,0,MB_OK
    Но вылетает ошибка. В чём дело?
     
  14. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    vg
    BOOL LookupAccountSid(

    LPCTSTR lpSystemName, // address of string for system name
    PSID Sid, // address of security identifier
    LPTSTR Name, // address of string for account name
    LPDWORD cbName, // address of size account string
    LPTSTR ReferencedDomainName, // address of string for referenced domain
    LPDWORD cbReferencedDomainName, // address of size domain string
    PSID_NAME_USE peUse // address of structure for SID type
    );

    mov tu_size,25
    invoke LookupAccountSid,0,buf.User.Sid,addr sch_accountname,addr tu_size,addr sch_domainname,addr tu_size,addr sid_name_use
     
  15. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Спасибо, работает.
    Только вместо buf db 1024 dup(?) нужно buf TOKEN_USER <>.
    И ещё, зачем mov tu_size,25?
     
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    vg
    Потому что cchName - in/out.