Программирование на C++ глазами хакера


Программа расшифровки пароля - часть 2


Теперь необходимо загрузить динамическую библиотеку. Для этого есть функция LoadLibrary, которой нужно только передать имя файла или полный путь. В примере указано только имя файла, поэтому библиотека должна находиться в одном каталоге с запускаемым файлом, либо ее нужно разместить в каталоге, доступном для Windows.

Загрузив библиотеку, надо определить адрес, по которому расположена функция RunStopHook, чтобы ее можно было использовать. Для этого существует функция GetProcAddress, которой нужно передать указатель на искомую библиотеку и название функции. Результат сохраняется в переменной RunStopHook.

Вот теперь все готово, и можно запускать функцию-ловушку. Это делается не совсем обычным способом:

(*RunStopHook)(true, hInstance);

Дальше запускается цикл обработки сообщений, в котором ничего изменять не надо. Но по выходе из программы следует остановить ловушку и выгрузить динамическую библиотеку. Это делается следующим образом:

(*RunStopHook)(false, hInstance);

FreeLibrary(hModule);

Примечание
Исходный код примера , описанного в этом разделе, вы можете найти на компакт - диске в каталоге \Demo\Chapter3\OpenPassTest.

Для тестирования примера поместите в один каталог исполняемый файл и динамическую библиотеку. Запустите программу и щелкните правой кнопкой мышки в поле ввода пароля. Звездочки (или любые другие символы) моментально превратятся в реальный текст.

На рис. 3.14 можно увидеть пример работы этой программы. Здесь изображено стандартное окно Windows 2000 для смены пароля. В первом поле вы видите пароль, который расшифрован нашей программой. Во втором поле, в котором нужно ввести подтверждение пароля, остались звездочки.

Рис. 3.14. Пример работы программы OpenPassTest




Начало  Назад  Вперед



Книжный магазин