хочу смапить РЕ на процесс, секция создается нормально. А вот ZwMapViewOfSection почемуто возвращает STATUS_SECTION_PROTECTION Как это обойти ? Код (Text): HANDLE LowLevel::ZwCreateSection(HANDLE hFile){ _ntCreateSection ZwCreateSection; HANDLE hSection = 0; LARGE_INTEGER i64; ZwCreateSection = (_ntCreateSection) ImageProcAddr(BaseNtdll,"ZwCreateSection"); if (!ZwCreateSection) return 0; GetFileSizeEx(hFile,&i64); ZwCreateSection(&hSection,SECTION_ALL_ACCESS,NULL,&i64,PAGE_READONLY,SEC_IMAGE,hFile); return hSection; }; PVOID LowLevel::ZwMapViewOfSection(HANDLE Process, HANDLE hSection, PVOID Address){ _ntMapViewOfSection ZwMapViewOfSection; SIZE_T ViewSize = 0; ZwMapViewOfSection = (_ntMapViewOfSection)ImageProcAddr(BaseNtdll,"ZwMapViewOfSection"); if(!ZwMapViewOfSection) return NULL; __asm int 3; ZwMapViewOfSection(hSection,Process,&Address,0,0,0,&ViewSize,ViewUnmap,MEM_RESERVE,PAGE_READONLY); return Address; }; int main(){ HANDLE hFile,hSection; LowLevel lowLevel; hFile = CreateFile("c:\\windows\\syswow64\\arp.exe",GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); hSection=lowLevel.ZwCreateSection(hFile); lowLevel.ZwMapViewOfSection(GetCurrentProcess(),hSection,NULL); };
MEM_RESERVE + PAGE_READONLY небывает. либо MEM_COMMIT + PAGE_READONLY, либо MEM_RESERVE + PAGE_NOACCESS
Great Сделал так: Код (Text): ZwCreateSection(&hSection,SECTION_MAP_WRITE|SECTION_MAP_READ,NULL,&i64,PAGE_WRITECOPY,SEC_IMAGE,hFile); 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
XshStasX потому что там не нужен ни один из них, кажется. ноль пойдет. я просто имел в виду, что резерв точно не катит по смыслу