Samlib.dll

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

  1. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    Здравствуйте!
    Подскажите пожалуйста где можно найти описание функций Samlib.dll.
    Знаю они типа не документированы. Можно даже сорц проги, что использующую Samlib.dll.
    К примеру samview.exe ;)
     
  2. hors

    hors New Member

    Публикаций:
    0
    Регистрация:
    11 авг 2010
    Сообщения:
    21
    Посмотри здесь processhacker.sourceforge.net
     
  3. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    к сожалению нету. ну тогда может программу по мониторингу вызовов апи подскажите?
     
  4. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    пользуюсь WinApiOverride32.
    kerb113pub еще можно попробовать.
     
  5. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    Посмотрел я вчера на вызовы в samview.exe, оказалось я ошибся, там RPC - вызовы минуя Samlib.dll.(
    Зашел еще на processhacker.sourceforge.net посмотрел по внимательней и нашел заголовочный файл ntsam.h так что СПАСИБО hors за помощь.

    Только беда в том что не пишу я на С++ и не все в ней понимаю!
    Может, если вам не тягость помочь мне в некоторых вопросах?
     
  6. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    Никак не удается вызвать функцию, ну незнаю я что тудазадавать!!(
    Помогите пожалуста!
    Код (Text):
    1. __checkReturn NTSTATUS NTAPI SamConnect (  
    2.                       __in_opt PUNICODE_STRING        ServerName,
    3.         __out    PSAM_HANDLE              ServerHandle,
    4.         __in      ACCESS_MASK              DesiredAccess,
    5.         __in      POBJECT_ATTRIBUTES    ObjectAttributes    )
    Вот только что понял.
    ServerName - указатель на строку с именем машины в формате юникод
    ServerHandle - Возвращаемый указатель на заголовок
    ACCESS_MASK - Я так понимаю, это битовая маска доступа!? Но какой параметр передать ХЗ
    POBJECT_ATTRIBUTES - А вот тут не черта не понял!??????

    Объясните чайнику кто нибудь. ПОЖАЛУЙСТА
     
  7. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    typedef struct _LSA_UNICODE_STRING {
    USHORT Length;
    USHORT MaximumLength;
    PWSTR Buffer;
    } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;

    как оказалось это не указатель на строку,а указатель на структуру.
    по остальному - хз, никогда не сталкивался с данной либой

    *еще бы рассказале какой еррор возвращает (пробовали же кольнуть данную функу с аксесом хоть какимто?)
     
  8. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    Да возвращает код ошибки, но в каком то непонятном формате, похоже на nativeAPI!?
     
  9. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    NTSTATUS
    0xC0000008, 0xC00000EF, 0xC000009A или мож еще какойто?
     
  10. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    0xC0000022 и что это за ошибка!?
     
  11. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    {Access Denied}
    A process has requested access to an object, but has not been granted those access rights.
     
  12. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Shadovv13
    STATUS_ACCESS_DENIED - {Access Denied} A process has requested access to an object, but has not been granted those access rights.

    прикрепил полезную тулзу скачаную гдет на васме)
     
  13. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    пробую еще разок..
    *как оказалось ехе принимать васм отказывается*
     
  14. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    СПАСИБО! тоже нашел!
    Процесс запросил доступ к объекту, однако права доступа не предоставлены.
    И че дале?? Я уже все права перепробовал!!
     
  15. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Shadovv13
    попробуйте psexec.exe на мелкомягких сайте скачать и запустить с правами системы.
     
  16. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    К сожалению тот же результат!
    Я думаю надо правильно указать объект в "_in POBJECT_ATTRIBUTES ObjectAttributes". А уж потом права доступа.
     
  17. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    Shadovv13
    для начала правильно указать ось и сервер, а еще лучше рассказать что вы пытаетесь сделать. Возможно тогда найдутся те кто сможет помочь, а то, как говорится - гадалки в гугле водятся.
     
  18. kejcerfcrv

    kejcerfcrv New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2011
    Сообщения:
    320
    ASMatic
    Есть такой сервис NtRaiseHardError, который выводит текст с описанием статуса. Сие реализовано через RtlFindMessage(RT_MESSAGETABLE), в ядре и нэйтиве. Посему незачем таскать левые тулзы, я например смотрю коды(те, которые не помню) в ntstatus.h, иначе можно напрямую дёрнуть ZwRaiseHardError().
     
  19. Shadovv13

    Shadovv13 Андрей

    Публикаций:
    0
    Регистрация:
    27 июл 2008
    Сообщения:
    65
    Адрес:
    Украина
    kejcerfcrv Согласен с вами, ну а насчет ObjectAttributes есть какие нибудь соображения?
     
  20. kejcerfcrv

    kejcerfcrv New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2011
    Сообщения:
    320
    Shadovv13
    Это описание обьекта как обычно. Да и ваша эта апи опенсурсная:
    Код (Text):
    1. BOOLEAN
    2. CtLsaLookupNamesInSamDomain(
    3.     IN OPTIONAL PUNICODE_STRING WorkstationName,
    4.     IN PUNICODE_STRING DomainControllerName,
    5.     IN PUNICODE_STRING SamDomainName,
    6.     IN CT_SAM_ACCOUNT_TYPE SamAccountType
    7.     )
    8.  
    9. /*++
    10.  
    11. Routine Description:
    12.  
    13.     This function enumerates all the SAM accounts of a specified type
    14.     in a specified SAM domain on a specified target system.  The system
    15.     must be one of the following:
    16.  
    17.     o The Workstation itself.
    18.     o A Domain Controller for the Primary Domain of the Workstation.
    19.     o A Domain Controller for one of the Trusted Domains of the
    20.       Workstation.
    21.  
    22.  
    23.     Having enumerated the accounts, the function then performs
    24.     an LsaLookupNames call via the specified Workstation to lookup all of
    25.     these account names, and then compares the returned information
    26.     with that expected.
    27.  
    28. Arguments:
    29.  
    30.     WorkstationName - Specifies a Workstation Name.  The name may be
    31.         the NULL string, which means the current system.
    32.  
    33.  
    34.     DomainControllerName - Specifies the name of a target Domain Controller
    35.         for (the Workstation's Primary Domain or one of its Trusted
    36.         Domains.
    37.  
    38.     SamDomainName - Specifies the name of the SAM Domain. This is either
    39.         the BUILTIN Domain or the name of the Accounts Domain.
    40.  
    41.     SamAccountType - Specifies the type of SAM account to be enumerated
    42.         and looked up.
    43.  
    44. Return Values:
    45.  
    46.     BOOLEAN - TRUE if successful, else FALSE.
    47.  
    48. --*/
    49.  
    50. {
    51.     NTSTATUS Status;
    52.     BOOLEAN BooleanStatus = TRUE;
    53.     SAM_HANDLE SamServerHandle = NULL;
    54.     SAM_HANDLE SamDomainHandle = NULL;
    55.     OBJECT_ATTRIBUTES SamObjectAttributes;
    56.     OBJECT_ATTRIBUTES LsaObjectAttributes;
    57.     SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
    58.     PSID SamDomainSid = NULL;
    59.     ULONG CountReturned;
    60.     ULONG EnumerationContext;
    61.     PSAM_RID_ENUMERATION EnumerationBuffer = NULL;
    62.     ULONG PreferedMaximumLength;
    63.     ULONG RidIndex;
    64.     ULONG NameIndex;
    65.     ULONG UserAccountControl;
    66.     LSA_HANDLE PolicyHandle = NULL;
    67.     PUNICODE_STRING SamDomainAccountNames = NULL;
    68.     ULONG SamDomainAccountNamesLength;
    69.     PLSA_REFERENCED_DOMAIN_LIST ReferencedDomains = NULL;
    70.     PLSA_TRANSLATED_SID Sids = NULL;
    71.     PSID_NAME_USE Uses = NULL;
    72.     PULONG RelativeIds = NULL;
    73.     ULONG RelativeIdsLength;
    74.     PUNICODE_STRING ThrowawayNames = NULL;
    75.     LONG ConstantDomainIndex;
    76.     LONG DomainIndex;
    77.  
    78.     //
    79.     // Setup Object Attributes for connecting to SAM on the specified
    80.     // DomainController.
    81.     //
    82.  
    83.     CtLsaInitObjectAttributes(
    84.         &SamObjectAttributes,
    85.         &SecurityQualityOfService
    86.         );
    87.  
    88.     //
    89.     // Connect to the SAM server.
    90.     //
    91.  
    92.     Status = SamConnect(
    93.                  DomainControllerName,
    94.                  &SamServerHandle,
    95.                  SAM_SERVER_LOOKUP_DOMAIN,
    96.                  &SamObjectAttributes
    97.                  );
    98.  
    99.  
    100.     if (!NT_SUCCESS(Status)) {
    Код (Text):
    1. // LSA Component Test for RPC API - main program                           //
    2. //                                                                         //
    3. /////////////////////////////////////////////////////////////////////////////
    4.  
    5.  
    6. VOID
    7. CtLsaInitObjectAttributes(
    8.     IN POBJECT_ATTRIBUTES ObjectAttributes,
    9.     IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
    10.     )
    11.  
    12. /*++
    13.  
    14. Routine Description:
    15.  
    16.     This function initializes the given Object Attributes structure, including
    17.     Security Quality Of Service.  Memory must be allcated for both
    18.     ObjectAttributes and Security QOS by the caller.
    19.  
    20. Arguments:
    21.  
    22.     ObjectAttributes - Pointer to Object Attributes to be initialized.
    23.  
    24.     SecurityQualityOfService - Pointer to Security QOS to be initialized.
    25.  
    26. Return Value:
    27.  
    28.     None.
    29.  
    30. --*/
    31.  
    32. {
    33.     SecurityQualityOfService->Length = sizeof(SECURITY_QUALITY_OF_SERVICE);
    34.     SecurityQualityOfService->ImpersonationLevel = SecurityImpersonation;
    35.     SecurityQualityOfService->ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
    36.     SecurityQualityOfService->EffectiveOnly = FALSE;
    37.  
    38.     //
    39.     // Set up the object attributes prior to opening the LSA.
    40.     //
    41.  
    42.     InitializeObjectAttributes(
    43.         ObjectAttributes,
    44.         NULL,
    45.         0L,
    46.         NULL,
    47.         NULL
    48.     );
    49.  
    50.     //
    51.     // The InitializeObjectAttributes macro presently stores NULL for
    52.     // the SecurityQualityOfService field, so we must manually copy that
    53.     // structure for now.
    54.     //
    55.  
    56.     ObjectAttributes->SecurityQualityOfService = SecurityQualityOfService;
    57. }
    Код (Text):
    1.             //
    2.             // Setup ObjectAttributes for SamConnect call.
    3.             //
    4.  
    5.             InitializeObjectAttributes(&ObjectAttributes, NULL, 0, 0, NULL);
    6.             ObjectAttributes.SecurityQualityOfService = &SecurityQos;
    7.  
    8.             SecurityQos.Length = sizeof(SecurityQos);
    9.             SecurityQos.ImpersonationLevel = SecurityIdentification;
    10.             SecurityQos.ContextTrackingMode = SECURITY_STATIC_TRACKING;
    11.             SecurityQos.EffectiveOnly = FALSE;
    12.  
    13.             Status = SamConnect(
    14.                          UncComputerName,
    15.                          &SamHandle,
    16.                          SAM_SERVER_LOOKUP_DOMAIN,
    17.                          &ObjectAttributes
    18.                          );
    19.  
    20.  
    21.             if ( !NT_SUCCESS(Status) ) {
    22.                 KdPrint(("MspChangePasswordSam: Cannot open sam on %wZ, status %x\n",
    23.                          UncComputerName, Status));
    24.                 DomainHandle = NULL;
    25.                 goto Cleanup;
    26.             }