Помогите пожалуйста решить проблему с чтением виртуальной памяти.

Тема в разделе "LANGS.C", создана пользователем WKoder, 16 авг 2007.

  1. WKoder

    WKoder New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2007
    Сообщения:
    5
    вот код
    Код (Text):
    1.                  NTSTATUS Status1;
    2.         ULONG RetLen;
    3.         ULONG Size=sizeof(PROCESS_BASIC_INFORMATION);
    4.         Info=(PPROCESS_BASIC_INFORMATION)ExAllocatePool(NonPagedPool,Size);
    5.             Status1 = ZwQueryInformationProcess(ProcessHandle,ProcessBasicInformation,Info,Size,&RetLen);
    6.             if(NT_SUCCESS(Status1))
    7.                 {
    8.                     PPEB Peb = (PPEB)ExAllocatePool(NonPagedPool,sizeof(PEB));
    9.                     Status1 = ZwReadVirtualMemory(ProcessHandle,Info->PebBaseAddress,Peb,sizeof(PEB),&RetLen);
    ZwReadVirtualMemory возвращает STATUS_ACCESS_VIOLATION(0xc000005)
    (я видел подобное в ринг3 - у меня почемуто извне читалась память которая принадлежит пространству самого процесса, а память присоединенных дллок не читалась), а если внедрить свою длл в процесс - то можно прочитать его память по любому адресу ниже ядра
    вопрос - есть ли возможность прочесть PEB процесса без внедрения в него дллок?
     
  2. WKoder

    WKoder New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2007
    Сообщения:
    5
    кстати тутже ещё вопрос - в какой либе есть функция _wcscmp (сравнение строк без учета регистра) в ДДК она есть но при сборке вылезает анрезолвед экстернал символ
     
  3. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    1. попробуй промапить Peb перед чтением.
    2. просто вроде экспортируется из ntoskrnl.exe как wcscmp (без подчеркивания). Для сравнения без учета регистра _wcsicmp, _wcsnicmp.
     
  4. WKoder

    WKoder New Member

    Публикаций:
    0
    Регистрация:
    16 авг 2007
    Сообщения:
    5
    Спс, нашёл решение с KeStackAttachProcess