Стать владельцем ветки реестра

Тема в разделе "WASM.BEGINNERS", создана пользователем 2FED, 18 авг 2008.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Подскажите в какую сторону копать. Какие функции используются чтобы завладень веткой реестра и добавить себе привелегий.

    Привелегии для установки владельца есть, в реестре regedit всё можно установить щёлкая мышкой =) Нужно сделать это программно.
     
  2. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    примерно так =)))
    Код (Text):
    1. BOOL GrantKeyAccess(HKEY hKey, SECURITY_DESCRIPTOR*& ptrCurrentPermissions)
    2. {
    3.     PACL                        pDacl               = NULL;
    4.     SECURITY_DESCRIPTOR         secDesc             = {0};
    5.     BOOL                        bDaclPresent        = FALSE;
    6.     BOOL                        bDaclDefaulted      = FALSE;
    7.     EXPLICIT_ACCESS             expilictAccess      = {0};
    8.     PACL                        newDACL             = NULL;
    9.     LONG                        Error               = ERROR_SUCCESS;
    10.     DWORD                       currentSize         = 0;
    11.     BOOL                        Result              = FALSE;
    12.  
    13.     ptrCurrentPermissions = NULL;
    14.  
    15.     // Let the system tell us how big this should be, this could be part of the problem if we
    16.     // are intializing to a size that is too large. Also we need to clear the structure before using
    17.     if (ERROR_INSUFFICIENT_BUFFER == (Error = RegGetKeySecurity(hKey, DACL_SECURITY_INFORMATION, ptrCurrentPermissions, &currentSize)))
    18.     {
    19.         ptrCurrentPermissions = (SECURITY_DESCRIPTOR*)malloc(currentSize);
    20.         memset(ptrCurrentPermissions,0x0,currentSize);
    21.         if (ERROR_SUCCESS != (Error = RegGetKeySecurity(hKey, DACL_SECURITY_INFORMATION, ptrCurrentPermissions, &currentSize)))
    22.             goto Exit;
    23.     } else
    24.         goto Exit;
    25.  
    26.     if (!IsValidSecurityDescriptor(ptrCurrentPermissions))
    27.         goto Exit;
    28.    
    29.     if (!GetSecurityDescriptorDacl(ptrCurrentPermissions, &bDaclPresent, &pDacl, &bDaclDefaulted))
    30.         goto Exit;
    31.    
    32.     BuildExplicitAccessWithName(&expilictAccess, TEXT("CURRENT_USER"), MAXIMUM_ALLOWED, SET_ACCESS, NO_INHERITANCE);
    33.  
    34.     if(ERROR_SUCCESS != (Error = SetEntriesInAcl(1, &expilictAccess, pDacl, &newDACL)))
    35.         goto Exit;
    36.     if(!InitializeSecurityDescriptor(&secDesc, 1))
    37.         goto Exit;
    38.     if(!SetSecurityDescriptorDacl(&secDesc, TRUE, newDACL, FALSE))
    39.         goto Exit;
    40.     //SetSecurityDesciptorControl
    41.     if(!SetSecurityDescriptorControl(&secDesc, 0x1400, 0x1400))
    42.         goto Exit;
    43.     if (!IsValidSecurityDescriptor(&secDesc))
    44.         goto Exit;
    45.     if (RegSetKeySecurity(hKey, DACL_SECURITY_INFORMATION, &secDesc))
    46.         goto Exit;
    47.  
    48.     Result = TRUE;
    49.  
    50. Exit:
    51.     if (pDacl)
    52.         LocalFree(pDacl);
    53.     if (newDACL)
    54.         LocalFree(newDACL);
    55.     if (!Result && ptrCurrentPermissions)
    56.     {
    57.         free(ptrCurrentPermissions);
    58.         ptrCurrentPermissions = NULL;
    59.     }
    60.    
    61.     return Result;
    62. }
     
  3. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А как сделать владельцем группу администраторы?

    Код (Text):
    1.     invoke  RegOpenKey,HKEY_LOCAL_MACHINE,addr aKey,addr hKey
    2. re:
    3.     invoke  RegGetKeySecurity,hKey, OWNER_SECURITY_INFORMATION, pCurPer, addr currentSize
    4.  
    5.     test    eax,eax
    6.     jz  nxt
    7.     cmp eax,ERROR_INSUFFICIENT_BUFFER
    8.     je  @f
    9.     jmp nxt
    10. @@:
    11.     invoke  GlobalAlloc,GMEM_FIXED,currentSize
    12.     mov pCurPer,eax
    13.     invoke  RtlZeroMemory,eax,currentSize
    14.     jmp re
    15. nxt:
    16.    
    17.     invoke   SetSecurityDescriptorOwner ?????
    18.    
    19.     invoke  RegSetKeySecurity,hKey, OWNER_SECURITY_INFORMATION, pCurPer
    20.     test    eax,eax
    21.     jnz exit
    22.  
    23.     ....
     
  4. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Код (Text):
    1. .data
    2. hKey        dd  ?
    3. nSize       dd  ?
    4.  
    5. domianLen   dd  0
    6. cbSid       dd  0
    7.  
    8. secDesc     SECURITY_DESCRIPTOR <>
    9. sid     SID <>
    10.  
    11. bDaclDefaulted  BOOL FALSE
    12.  
    13. aKey        db  'SOFTWARE\test',0
    14.  
    15. sid_name_use    db 255 dup(?)
    16.  
    17. buffer      db  100 dup(?)
    18. domian      db  100 dup(?)
    19.  
    20.  
    21. .code
    22.  
    23. mov nSize,100
    24. invoke  GetUserName,addr buffer,addr nSize
    25.  
    26. ;Получаем размер под буферы
    27. invoke  LookupAccountName,0,addr buffer,addr sid,addr cbSid,addr domian,addr domianLen,addr sid_name_use
    28.  
    29. ;Получаем SID
    30. invoke  LookupAccountName,0,addr buffer,addr sid,addr cbSid,addr domian,addr domianLen,addr sid_name_use
    31.  
    32.  
    33. invoke  RegCreateKeyEx,HKEY_CURRENT_USER,addr aKey,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS or WRITE_OWNER,0,ADDR hKey,0
    34.  
    35. invoke  InitializeSecurityDescriptor,addr secDesc,1
    36.  
    37. invoke  SetSecurityDescriptorOwner,addr secDesc,addr sid,addr bDaclDefaulted
    38.  
    39. invoke  RegSetKeySecurity,hKey, OWNER_SECURITY_INFORMATION,addr secDesc
    Вот такой вот код навоял, только почемуто он не пашет, Все функции возвращают статус успешного завершения, проверено в отладчике, но владелец не меняется, текущий владелец группа "Администраторы" этот код должен сделать владельцем текущего юзера но почемуто не работает, помогите разобратся =(
     
  5. AlexeyUSA

    AlexeyUSA New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2008
    Сообщения:
    11
    Подскажите пожалуйста как удалить данные ветки без изменения прав доступа в реестре.
    Я не программист........буду рад если кто поможет. спасибо.

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI_HAL
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ACPI_HAL

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\ACPI_HAL
    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\Root\ACPI_HAL