Как очистить(переписать нулями) весь HDD включая Windows? Можно ли это сделать из win32-пpиложения? Например, так? Код (Text): ClearComputer proc LOCAL hfile:DWORD LOCAL num:BYTE LOCAL buffer[4096]:BYTE LOCAL diskbuf[20]:BYTE jmp @F disk db "\\.\PHYSICALDRIVE0",0 @@: invoke lstrcpy,addr diskbuf,addr disk mov num,30h invoke RtlZeroMemory,addr buffer,sizeof buffer yet: invoke CreateFile,addr diskbuf,GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_NO_BUFFERING,0 inc eax je nohandle dec eax mov hfile,eax invoke GetFileSize,hfile,0 mov ecx,eax shr ecx,12 inc ecx @loop: push ecx invoke WriteFile,hfile,addr buffer,sizeof buffer,esp,0 pop ecx loop @loop inc num mov al,num mov byte ptr diskbuf+17,al invoke CloseHandle,hfile jmp yet nohandle: ret ClearComputer endp
Насчет правильности кода ничего не могу сказать. но очистить весь хдд вместе с виндовс из под нее же самой - маловероятно. Так как во первых - при запущенной виндовс блокируется часть системных файлов. Если их получится разблокировать, то встает вторая приграда - как только ты их перезапишешь произойдет бсод. Если бсода не произошло, что маловероятно, третья преграда - структура файловой системы - это и разрушение MFT и всего прочего, а виндовс очень любит писать и читать диск - поэтому произойдет ошибка и опять же бсод. Как вариант - очистить диск - загрузка с этогоже диска - перенос тела программы и всего необходимого в RAM и оттуда все стирать еще до загрузки виндовс. *Можно ли это сделать из win32-пpиложения?* Можно - но главное чтоб подопытный диск в это время не использовался совсем. ---- заглядывая в будующее на 10 минут в перед - благодарю Great за уточнение - теперь буду иметь ввиду.
бсод может дать только компонент ядра, а все файлы ядра неблокированы ,то есть после загрузки образа в память ядра идет дереференес FILE_OBJECT и файл может быть спокойно удален/перезаписан.есть правда один вариант для бсода - если завершится какойнить важный процесс с исключением, например, csrss
vg Ну если откроешь физикал драйв с генерик_врите - то да можно без проблем очистицо Упасть по дороге тоже могет, вряд ли этот кейс тестировался в микрософте
У хардов есть команда "стереть всё" можно стирать просто, а можно навороченно с записью различных шаблонов. Но для этого нужен прямой к нему доступ.