ZwMapViewOfSection в UserMode STATUS_SECTION_PROTECTION

Тема в разделе "WASM.X64", создана пользователем XshStasX, 12 дек 2010.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    хочу смапить РЕ на процесс, секция создается нормально.
    А вот ZwMapViewOfSection почемуто возвращает STATUS_SECTION_PROTECTION
    Как это обойти ?
    Код (Text):
    1. HANDLE LowLevel::ZwCreateSection(HANDLE hFile){
    2.     _ntCreateSection ZwCreateSection;
    3.     HANDLE hSection = 0;
    4.     LARGE_INTEGER i64;
    5.  
    6.     ZwCreateSection = (_ntCreateSection) ImageProcAddr(BaseNtdll,"ZwCreateSection");
    7.     if (!ZwCreateSection)
    8.         return  0;
    9.  
    10.     GetFileSizeEx(hFile,&i64);
    11.  
    12.     ZwCreateSection(&hSection,SECTION_ALL_ACCESS,NULL,&i64,PAGE_READONLY,SEC_IMAGE,hFile);
    13.  
    14.     return hSection;
    15. };
    16.  
    17. PVOID LowLevel::ZwMapViewOfSection(HANDLE Process, HANDLE hSection, PVOID Address){
    18.     _ntMapViewOfSection ZwMapViewOfSection;
    19.     SIZE_T  ViewSize = 0;
    20.     ZwMapViewOfSection = (_ntMapViewOfSection)ImageProcAddr(BaseNtdll,"ZwMapViewOfSection");
    21.  
    22.     if(!ZwMapViewOfSection)
    23.         return NULL;
    24.     __asm int 3;
    25.     ZwMapViewOfSection(hSection,Process,&Address,0,0,0,&ViewSize,ViewUnmap,MEM_RESERVE,PAGE_READONLY);
    26.     return Address;
    27. };
    28. int main(){
    29.         HANDLE hFile,hSection;
    30.         LowLevel lowLevel;
    31.         hFile = CreateFile("c:\\windows\\syswow64\\arp.exe",GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
    32.  
    33.         hSection=lowLevel.ZwCreateSection(hFile);
    34.         lowLevel.ZwMapViewOfSection(GetCurrentProcess(),hSection,NULL);
    35. };
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    MEM_RESERVE + PAGE_READONLY небывает.

    либо MEM_COMMIT + PAGE_READONLY, либо MEM_RESERVE + PAGE_NOACCESS
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Great
    Сделал так:

    Код (Text):
    1. ZwCreateSection(&hSection,SECTION_MAP_WRITE|SECTION_MAP_READ,NULL,&i64,PAGE_WRITECOPY,SEC_IMAGE,hFile);
    2.  
    3. ZwMapViewOfSection(hSection,Process,&Address,0,0,0,&ViewSize,ViewUnmap,MEM_RESERVE,PAGE_WRITECOPY);
    Результат аналогичный.
    Если добавить MEM_COMMIT(или MEM_COMMIT | MEM_RESERVE) то получаем от ZwMapViewOfSection STATUS_INVALID_PARAMETER_9

    OS Windows XP x64 sp 2
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    zer0day2
    звездуй откуда пришёл
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    XshStasX
    потому что там не нужен ни один из них, кажется. ноль пойдет. я просто имел в виду, что резерв точно не катит по смыслу
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    WDK:
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну вот, значит, ноль пойдет, я это имел в виду.