SID текущего юзера. Какая API это может?

Тема в разделе "WASM.WIN32", создана пользователем dagmat, 29 май 2006.

  1. dagmat

    dagmat New Member

    Публикаций:
    0
    Регистрация:
    22 май 2006
    Сообщения:
    12
    Подскажите пожалуйста как програмно узнать SID текущего пользователя.

    Если не трудно напишите кусок кода в дезАсм варианте
     
  2. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    GetTokenInformation и LookupAccountSid. Примеров их использования в MSDN куча.



    Например "HOWTO: Retrieve Current User and Domain Names on Windows NT, Windows 2000, or Windows XP"
     
  3. dagmat

    dagmat New Member

    Публикаций:
    0
    Регистрация:
    22 май 2006
    Сообщения:
    12
    Если необходимо получить как имя пользователя так и имя домена для текущего потока, то сначала, при помощи функции GetTokenInformation надо распаковать пользовательский идентификатор (SID) из потока. А затем вызвать функцию LookupAccountSid , чтобы получить имя учётной записи и имя домена, связанные с этим SID.



    Но я не смогу пересобрать программу , а все примеры и исходники на С+ или в дельф. Мне надо кусок кода, чтоб я его "инжектировал" в прогу. А сообразить не могу как он должен выглядеть
     
  4. dagmat

    dagmat New Member

    Публикаций:
    0
    Регистрация:
    22 май 2006
    Сообщения:
    12
    Если есть что-то киньте прогу в которой реализованы эти функции, я постараюсь разобраться
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    dagmat



    Почему? Пример из msdn можно быстро собрать в VC и посмотреть в отладчике или дизасме результат.
     
  6. dagmat

    dagmat New Member

    Публикаций:
    0
    Регистрация:
    22 май 2006
    Сообщения:
    12
    Я не лентяй и не нытик. Но меня жутко поджимает время, а нерешённых задач еще хватает. Люди добрые, скомпилируйте код в аттаче или какой-нить другой по сабжу, я не успею изучить С+ за 4 дня...Если кто-то считает что любой труд должен оплачиваться- не вопрос, поверьте мне очень нужно.

    [​IMG] 24579445__sorc.txt
     
  7. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165


    Помоему ты мазахист. Другого слова подобрать немогу. Но впрочем как хочешь.

    Я скомпили код функции под MSVC++. Файлы ничем не пожаты.

    В режиме дебага файл на hххp://rapidshare.de/files/21751236/User.exe.html (104 кб)



    В режиме релиза: см. аттач (22 кб)



    Код main функции был таков:

    char User[0x100];

    char Domain[0x100];

    DWORD LenUser = sizeof(User);

    DWORD LenDomain = sizeof(Domain);

    GetCurrentUserAndDomain(User, &LenUser, Domain, &LenDomain);

    [​IMG] 1442265913__User.exe
     
  8. horpis

    horpis New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    154
    интересно GetTokenInformation в user mode работает?? выдает ошибку ERROR_NOACCESS
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    horpis
    только там и работает.
     
  10. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    Сам сегодня этим занимался. Вот что получилось:

    GetMySid PROTO :lol: WORD

    .data
    SSid db 50h dup (0)

    .code
    ...
    invoke GetMySid, addr SSid

    Код (Text):
    1. GetMySid    PROC  uses ebx esi edi edx ecx pStr_Sid:DWORD
    2. LOCAL hAccessToken :dword
    3. LOCAL dwInfoBufferSize :dword
    4. LOCAL szSid :dword
    5.  
    6.     invoke SetLastError,0h 
    7.     invoke  GetCurrentProcess       ; try to retrieve Access Token from current thread
    8.     mov ebx,eax
    9.     invoke  OpenProcessToken, ebx, TOKEN_QUERY, addr hAccessToken
    10.     .if eax != 0
    11.         invoke  GlobalAlloc, GMEM_FIXED, 1024       ;allocating buff for TokenInformation struct
    12.         mov ebx,eax
    13.         push ebx        ;Svae pSid for call LocalFree
    14.         push ebx        ;Svae pSid
    15.         invoke  GetTokenInformation, hAccessToken, TokenOwner, ebx, 1024, ADDR dwInfoBufferSize
    16.         .if eax != 0   
    17.             pop ebx     ; pop pSid
    18.             mov ebx,[ebx]
    19.             invoke  ConvertSidToStringSid, ebx, addr szSid
    20.             .if eax != 0
    21.                 mov esi,szSid
    22.                 mov edi,pStr_Sid
    23.                 .while AL!=0
    24.                     lodsb
    25.                     stosb
    26.                 .endw
    27.                 invoke LocalFree,szSid
    28.             .endif                         
    29.         .else
    30.             pop ebx
    31.         .endif
    32.         call LocalFree
    33.         invoke  CloseHandle, hAccessToken
    34.     .endif
    35.     invoke  GetLastError
    36.     ret
    37. GetMySid    endp