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

Дрессированные окна

Александр Гайша

Хакер, номер #086, стр. 086-116-2


Остается только лязгать зубами от бессильной злобы. Хотя, постой-ка, есть ведь много красивых и нужных вещей, которые тоже закрыты, но пароль можно вводить немыслимое число раз! Хе-хе, возможно, сегодня все-таки удастся что-нибудь взломать.

На кандидатуры для взлома подходят: запароленные документы Microsoft Office и архивы WinRAR, исходные тексты различных сред разработки, ограничения содержимого Internet Explorer, да и вообще любые парольные защиты.

Поскольку мы будем не просто тыкаться-мыкаться, а писать супер-пупер-программу, то определимся с местом, куда именно она будет подбирать пароль. Пусть это будет всеми ругаемый, но всеми используемый браузер IE. Есть там такая функция - ограничения контента. Чтобы не лазили, где не надо. Вот ее и будем отключать (переписать прогу под свои нужды, ты сможешь легко и непринужденно, если прочтешь и перепишешь 33 раза последующее изложение).

[ближе к делу]

Для начала определимся, как надо включать и отключать парольную защиту, по мнению MS. В меню ИЕ (я беру версию 6.00) выбираем «Сервис»->»Свойства обозревателя», и в открывшемся окне переходим на закладку «Содержание». Там есть красивая кнопка «Включить», которая всю гадость и делает. Включаем (если еще когда-нибудь захочешь воспользоваться своим браузером, вводимый пароль лучше записать на бумажке, а то вдруг наша тулза не сработает?). Если все сделано правильно, то на той же закладке, где была кнопка «Включить», появится кнопка «Отключить» (удивительный поворот событий!). Когда ее нажмешь, появится окошко «Требуется пароль-допуск», с которым мы и будем работать.

«Но как? – вероятно завопит нерадивый читатель из деревни Щукино. - Мы же не умеем совсем программировать!». И, правда, пора исправляться и переходить ближе к делу.

Большинство нормальных Win32-приложений имеет хотя бы одно окно. Каждое окно имеет так называемый хэндл (handle - дескриптор, описатель, который представляет собой 4-байтное число), зная который, с окном можно творить все, что душе угодно. Например, перемещать его, закрывать, изменять или считывать заголовок, работать с его дочерними окнами и т.д. Особенно интересен последний пунктик, и, если ты еще не знаешь, что такое Кнопка, приготовься к легкому шоку. Все кнопки, поля для ввода текста, выпадающие списки и меню являются, с точки зрения оси, обычными окнами, только дочерними для нормального окна, которому они принадлежат. Значит, зная хэндл кнопки, можно ее программно нажать, а, узнав хэндл поля для ввода текста, можно заполнить его своим текстом. Улавливаешь суть?

Помимо прочего, вся система является событийно-управляемой. Это значит, что, как только случается какое-нибудь мало-мальски значимое событие, ОС генерирует кучу сообщений (о сообщениях читай на соответствующей врезке) и посылает их тем окнам, которым надо их посылать.

Например, щелкнул юзер левой мышью над окном Word’а. Винда засекает клик, смотрит, над каким окном это произошло, и генерирует сообщения WM_LBUTTONDOWN и WM_LBUTTONUP, которые посылает главному окну популярного текстового процессора. А что же Word будет делать с этими сообщениями, как именно он их получает? Легко.

Назад на стр. 086-116-1  Содержание  Вперед на стр. 086-116-3