Понадобилось, дабы во все процессы попадал патченый ntdll. По идее когда копируется ап из ядра в MmInitializeProcessAddressSpac(), то оригинальный образ библы должно брать тоже. Пропатчил в ядре, но в оригинальные процессы попадает всегда чистый и не патченый, в чем загвоздка ? ps: Образ в ядре постоянно остается патченым, PspMapSystemDll() и co. его не трогают.
Не понял, где патчите нтдлл, в памяти или на диске? Это раз. Если в памяти, то патчите read-only секции или writeable тоже? Что такое "оригинальные процессы"? Имелось в виду "остальные процессы"?
В памяти. Патчу read-only предварительно сменив vp на page_executable_writable. Остальные имелось ввиду все =)
Тебе выделяются частные копии страниц, когда ты делаешь ZwProtectVirtualMemory. Их ты и изменяешь. Другие процессы видят оригинальное содержимое