Cogitations poenam nemo patitur (лат.)
Никто не несет наказания за мысли
© sysenter 2004
JID: sysenter@jabber.noНе удаляемая директория
Хидер, который будет необходим под все эти выкрутасы в дальнейшем и сама либа ― в аттаче.
В общем, запланировал небольшой цикл статей, для тех, кто любит юзермод. Часть будет на Си, часть на Fasm, часть на masm32.
Но в том плане, что это не совсем юзермод, а именно самую низкую его часть, "приближенную к ядру" ― функции native (нативные) из библиотеки ntdll.dll
Итак функция, которая создает директорию, которую стандартными средствами удалить не возможно, код:Технология сложная, если разбирать корни. Доступна только в нативе, если углубляться в ФС, описание которых займет еще 120 страниц; и здесь рассказывать, ― то займет не одну страницу, думаю, что сообщество или скопипастит или изучит, ― кому как. Одну из следующих частей опубликую, как создавать скрытые ключи в реестре (доступна только в нативе соответственно). Функцию подкорректировал ― отладочный лог можно посмотреть через DbgView, к примеру.Код (C++):
bool MakeNoRemoveDirectory(LPWSTR lpDirPathName) { UNICODE_STRING NameU ={0}; HANDLE DirectoryHandle = NULL; IO_STATUS_BLOCK ioSB = {0}; bool flag=false; OBJECT_ATTRIBUTES ObjAttr; RtlInitUnicodeString(&NameU,lpDirPathName); RtlDosPathNameToNtPathName_U(lpDirPathName,&NameU,NULL,NULL); _R: InitializeObjectAttributes(&ObjAttr,&NameU,OBJ_CASE_INSENSITIVE,NULL,NULL); if(NT_SUCCESS(NtCreateFile (&DirectoryHandle,FILE_LIST_DIRECTORY | SYNCHRONIZE | FILE_OPEN_FOR_BACKUP_INTENT, &ObjAttr,&ioSB,NULL,FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY,FILE_SHARE_READ, FILE_CREATE,FILE_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT,NULL,0))) { NtClose(DirectoryHandle); if(NameU.Buffer) if (flag) {OutputDebugStringW(NameU.Buffer); return flag;} flag=true; wcscat(NameU.Buffer,L"\\..\\"); NameU.Length+=4*sizeof(WCHAR); goto _R; } return flag; }
Таким макаром можно создать директорию, которую удалить возможно только через файловую систему.
Для любителей натива (часть 1) Не удаляемая директория
Дата публикации 9 янв 2018
| Редактировалось 24 янв 2018