Если section (отображение файла в win32 land) равно NULL, используется раздел родительского процесса. Может быть возможно использовать NULL и выделять новую память и указывать на нее EIP (или использовать отображение файла подкачки), но использование NtCreateProcess проблематично, оно недокументировано и не регистрируется в подсистеме win32, как это делает CreateProcess. (Если вы хотите использовать только экспорт из ntdll, это может быть хорошо)
На Win9x, NT4 и 2000 вы можете удалить себя с диска во время работы, используя грязные приемы, перечисленные здесь .
Другие опции:
- Используйте драйвер, его можно удалить после загрузки (для этого используются инструменты sysinternal)
- Использовать хост-процесс; Запустите файл explorer.exe, cmd.exe или rundll32.exe приостановленным и используйте встроенный код CreateRemoteThread + (это, конечно, означает, что на диске есть исполняемый файл, но в нем нет ни одного кода)