Гуглил я тогда API методы работы с окнами. Обнаружил одну незначительную на первый взгляд "оплоху", и заключается она в том, что окно авторизации не закрывается на протяжении всей работы приложения qip.exe, причем даже после удачной авторизации на сервере AOL и дальнейшей работы с этим клиентом. Другими словами мы пользуемся QIP'ом: отсылаем сообщения, принимаем файлы и т.п., а окно себе находится в режиме Hide.
Чем это грозит? Вроде как и ничем особенным, висит окно да и пусть - ведь не мешает. А вот тут-то следует теперь сказать почему это все я назвал "оплохой". Окно (class TManForm) продолжая свое скрытое существование хранит в себе в полях логин/номер айсику (class TComboBox) и пароль (class TEdit), хотя и пароль вроде как под звездочками, но это преграда только для человеских глаз, а не для машинного кода.
Вроде как и это не проблема, если комп не протроянен, за ним никто кроме вас не работает. Но так бывает не всегда. А значит нужно предохраняться и быть на чеку.
Теперь пару слов о стратегии получения логина и пасса от аси. API метод FindWindow возвращает дескриптор окна по имени его класса, т.е. этим кодом
Код:
[code Delphi]
var
h : THandle;
begin
h := FindWindow('TManForm', 0);
[/code Delphi]
дескриптор окна авторизации квипа у нас в кармане. Но этого мало и мы идем далее. Поле логина и пароля находятся в рамке (class TGroupBox), теперь найдя дескриптор окна легко можно получить дескриптор рамки, затем дескрипторы поля списка с вписанным в него логином и дескриптор поля со "звездочным" паролем. Код далее приводить не буду. Я думаю понятно по каким причинам.
Отмечу только, что пароль только отбражается звездочками, а на самом деле в этом поле находятся те заветные символы, из которых и складывается пасс.
проверено от клиента 79xxx до 8070