Полная очистка диска

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 27 янв 2008.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Как очистить(переписать нулями) весь HDD включая Windows?
    Можно ли это сделать из win32-пpиложения?
    Например, так?

    Код (Text):
    1. ClearComputer proc
    2.      LOCAL hfile:DWORD
    3.      LOCAL num:BYTE
    4.      LOCAL buffer[4096]:BYTE
    5.      LOCAL diskbuf[20]:BYTE
    6. jmp @F
    7. disk db "\\.\PHYSICALDRIVE0",0
    8. @@:
    9.      invoke lstrcpy,addr diskbuf,addr disk
    10.      mov    num,30h
    11.      invoke RtlZeroMemory,addr buffer,sizeof buffer
    12. yet:
    13.      invoke CreateFile,addr diskbuf,GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_NO_BUFFERING,0
    14.      inc    eax
    15.      je     nohandle
    16.      dec    eax
    17.      mov    hfile,eax
    18.      invoke GetFileSize,hfile,0
    19.      mov    ecx,eax
    20.      shr    ecx,12
    21.      inc    ecx
    22. @loop:
    23.      push   ecx
    24.      invoke WriteFile,hfile,addr buffer,sizeof buffer,esp,0
    25.      pop    ecx
    26.      loop   @loop
    27.      inc    num
    28.      mov    al,num
    29.      mov    byte ptr diskbuf+17,al
    30.      invoke CloseHandle,hfile
    31.      jmp    yet
    32. nohandle:
    33.      ret
    34. ClearComputer endp
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Нет
     
  3. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    Насчет правильности кода ничего не могу сказать. но очистить весь хдд вместе с виндовс из под нее же самой - маловероятно. Так как во первых - при запущенной виндовс блокируется часть системных файлов. Если их получится разблокировать, то встает вторая приграда - как только ты их перезапишешь произойдет бсод. Если бсода не произошло, что маловероятно, третья преграда - структура файловой системы - это и разрушение MFT и всего прочего, а виндовс очень любит писать и читать диск - поэтому произойдет ошибка и опять же бсод.
    Как вариант - очистить диск - загрузка с этогоже диска - перенос тела программы и всего необходимого в RAM и оттуда все стирать еще до загрузки виндовс.
    *Можно ли это сделать из win32-пpиложения?*
    Можно - но главное чтоб подопытный диск в это время не использовался совсем.
    ----
    заглядывая в будующее на 10 минут в перед - благодарю Great за уточнение - теперь буду иметь ввиду.
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    бсод может дать только компонент ядра, а все файлы ядра неблокированы ,то есть после загрузки образа в память ядра идет дереференес FILE_OBJECT и файл может быть спокойно удален/перезаписан.есть правда один вариант для бсода - если завершится какойнить важный процесс с исключением, например, csrss
     
  5. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    vg
    Ну если откроешь физикал драйв с генерик_врите - то да можно без проблем очистицо
    Упасть по дороге тоже могет, вряд ли этот кейс тестировался в микрософте :)
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    У хардов есть команда "стереть всё" можно стирать просто, а можно навороченно с записью различных шаблонов. Но для этого нужен прямой к нему доступ.