Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #58, СЕНТЯБРЬ 2005 г.

Издевательство над окнами

nezumi

Спецвыпуск: Хакер, номер #058, стр. 058-024-4


return -1;

}

// получаем хэндлы интересующих нас дочерних окон

EnumChildWindows(me_hwnd, &EnumChildWindowsProc, 0);

// получаем имя пользователя и, если оно недостаточно длинное,

// вводим имя хакера по умолчанию ;)

while(1)

{

// получит введенное имя

SendMessage(username, WM_GETTEXT, MAX_STR, (int) username_buf);

if (strlen(username_buf)>=0xA) break; else

{

SendMessage(username, WM_SETFOCUS, 1, 0);

SendMessage(username, WM_SETTEXT, 0, (int) &MY_NAME);

SendMessage(username, WM_KILLFOCUS, 1, 0);

}

}

// вводим сгенерированный номер в окно ломаемого приложения

SendMessage(regnum, WM_SETTEXT, 0, (int) regnum_buf);

// указываем, что этот номер - поддельный

SendMessage(hackreg, WM_SETTEXT, 0, (int) HACKREG);

// нажимаем на кнопку "Ввод"

SendMessage(input_but, WM_SETFOCUS, 1, 0);

SendMessage(input_but, BM_SETSTATE, 1, 0);

PostMessage(input_but, WM_KILLFOCUS, 0, 0);

// сваливаем отсюда

return 0;

}

Дефейсим калькулятор и другие программы

#define s "Hello, World!"

#define _EVENT_ 10

#define _PER_ 10

#define _N_ 5

HWND h=0;

main(int argc, char **argv)

{

int a; HDC dc; RECT rect, fill_rect; HBRUSH br; HFONT font; char buf[100];

h=FindWindow(0, "Калькулятор");

//h=FindWindow(0, "Обработчик команд Windows NT");

//h=FindWindow(0, "Командная строка");

if (argc > 1) h=FindWindow(0, argv[1]);

if (h==0) return -1;

dc = GetDC(h); if (dc)

{

br=CreateSolidBrush(RGB(69,0,0));

rect.left=1; rect.right=1000; rect.top=1; rect.bottom=1000;

GetClientRect(h, &rect);

font=CreateFont(rect.bottom/2,rect.right/strlen(s),0,0,100,0,0,0,

ANSI_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,FF_MODERN, "Comic Sans MS");

fill_rect.top=3*rect.bottom/4; fill_rect.bottom=rect.bottom-10;

fill_rect.left=10; fill_rect.right=10; ReleaseDC(h, dc);

for (a=0; a < 255; a++)

{

printf("\r%03d",100*a/255);

if (dc = GetDC(h))

{

SelectObject(dc, font);SetBkMode(dc, TRANSPARENT);

SetTextColor(dc, rand()); //RGB(255-a,0,0));

TextOut(dc, 0, rect.bottom/8, s ,strlen(s) );

ReleaseDC(h, dc);

}

SetWindowText(h, ltoa(100*a/255,buf,10)); Sleep(69);

}

SendMessage(h, WM_SYSCOMMAND, SC_MINIMIZE, 0); Sleep(69);

SendMessage(h, WM_SYSCOMMAND, SC_RESTORE, 0);

SetWindowText(h, "Hello, Sailor!");

for (a=0; a < 10; a++) {ShowWindow(h, a & 1); Sleep(69);}

}else printf("-ERR\n");

}

При пересылке сообщения от одного приложения другому механизмы аутентификации не задействуются!

Получить дескриптор интересующего тебя приложения - самое простое, геморрой начинается с дочерними окнами и их элементами управления.

Для эмуляции ввода сначала нужно установить фокус (WM_SETFOCUS), а потом убить этот фокус (WM_KILLFOCUS), так как кнопка срабатывает в момент отпускания.

Назад на стр. 058-024-3  Содержание