Overcoming sandbox evasion via msgbox

Well it seems that a simple msgbox is able to stump all sorts of vendors who employ sandboxing.
So I've decided to try and do something about this, and my first attempt has resulted in a brute force mouse clicker. However I still need to detect when to invoke my BruteClick wrath. I'm sure a Real programmer would find a more elegant approach.
Anyhow I've no time left so here's the code so far;


/* # Brute force clicking app for killing dialog boxes
   #
 */


#include <Windows.h>
#include <vector>
#pragma comment (lib, "user32.lib")
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <string.h>


using namespace System;
using namespace std;
 

void MouseSetup(INPUT *buffer, long SCREEN_WIDTH, long SCREEN_HEIGHT)
{
 buffer->type = INPUT_MOUSE;
 buffer->mi.dx = (0 * (0xFFFF / SCREEN_WIDTH));
 buffer->mi.dy = (0 * (0xFFFF / SCREEN_HEIGHT));
 buffer->mi.mouseData = 0;
 buffer->mi.dwFlags = MOUSEEVENTF_ABSOLUTE;
 buffer->mi.time = 0;
 buffer->mi.dwExtraInfo = 0;
}


void MouseMoveAbsolute(INPUT *buffer, int x, int y, long SCREEN_WIDTH, long SCREEN_HEIGHT)
{
 buffer->mi.dx = (x * (0xFFFF / SCREEN_WIDTH));
 buffer->mi.dy = (y * (0xFFFF / SCREEN_HEIGHT));
 buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE);

 SendInput(1, buffer, sizeof(INPUT));
}


void MouseClick(INPUT *buffer)
{
 buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN);
 SendInput(1, buffer, sizeof(INPUT));

 Sleep(10);

 buffer->mi.dwFlags = (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP);
 SendInput(1, buffer, sizeof(INPUT));
}

void main()
{
 // start by getting the screen resolution
 long fScreenWidth = GetSystemMetrics(SM_CXSCREEN);
 long fScreenHeight = GetSystemMetrics(SM_CYSCREEN);

 // http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx
 // If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535.
 // The event procedure maps these coordinates onto the display surface.
 // Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.
 long startWidth = fScreenWidth / 4;
 long endWidth = fScreenWidth / 4 * 3;

 long startHeight = fScreenHeight / 2;
 long endHeight = fScreenHeight / 4 * 3;

 INPUT buffer[1];

 MouseSetup(buffer,fScreenWidth, fScreenHeight);

 long wX = startWidth;
 long hX = startHeight;

 // need to hide this window so as not to loose focus.
 ShowWindow(GetConsoleWindow(), SW_HIDE);

 while (hX < endHeight)
 {
  while (wX < endWidth)
  {
   MouseMoveAbsolute(buffer, wX, hX, fScreenWidth, fScreenHeight);
   MouseClick(buffer);
   wX = wX + 10;
  }
  wX = startWidth;
  hX = hX + 10;
 }
 

 //MouseMoveAbsolute(buffer, 700, 450, fScreenWidth, fScreenHeight);
 //MouseClick(buffer);

 //return 0;
}

Comments

Popular Posts