Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | | | | |
Ага. И вообще без программирования 01.09.04 12:53 Число просмотров: 1180
Автор: amirul <Serge> Статус: The Elderman
|
Тогда легче просто спросить
|
<programming>
|
[Win32] Получение Пароля из эдита чужого окна. 28.08.04 15:15
Автор: hmvs Статус: Незарегистрированный пользователь
|
Получение Пароля из эдита чужого окна.
Столкнулся с ситуацией, что нужно получить пароль из едита со стилем ES_PASSWORD из окна чужого процесса.
Но как я понял SendMessage(hwndch, WM_GETTEXT, 250, (LPARAM)text) ну и GetWindowText для этого не годятся.
Нашел, что это можно обойти таким способом, но это в принципе не совсем то, хотелось бы что-нибудь по разумнее:
//winf это WINDOWINFO
//hwndch это HWND //то бишь хендл дочернего окна(контрола)
if(GetWindowInfo(hwndch, &winf) != NULL)
{
if (winf.dwStyle & ES_PASSWORD)
{
LRESULT result;
printf("passw");
result = SendMessage(hwndch, EM_GETPASSWORDCHAR, NULL, NULL);
PostMessage(hwndch, EM_SETPASSWORDCHAR, NULL, NULL);
Sleep(100); // не обязательно
if(SendMessage(hwndch, WM_GETTEXT, 250, (LPARAM)text))
{
printf("[%s]\n", text);
} else printf("empty\n");
SendMessage(hwndch, EM_SETPASSWORDCHAR, result, NULL);
}
}
|
|
[Win32] Возможно SetWindowLong поможет 30.08.04 11:52
Автор: amirul <Serge> Статус: The Elderman Отредактировано 30.08.04 11:53 Количество правок: 1
|
В частности при помощи GetWindowLong с GWL_STYLE взять стиль, сбросить в нем ES_PASSWORD, записать стиль обратно SetWindowLong, считать текст WM_GETTEXT, восстановить стиль.
В windowsx.h описаны очень полезные но почему то недокументированные макросы. С их помощью можно сделать все еще проще:
DWORD style;
style = GetWindowStyle(hwnd);
SetWindowLong(hwnd, GWL_STYLE, style & ~(ES_PASSWORD));
Edit_GetText(hwnd, buffer, length);
SetWindowLong(hwnd, GWL_STYLE, style);
---
|
| |
[Win32] Только не забудьте, что GetWindowText не работает между процессами. 30.08.04 13:08
Автор: HandleX <Александр М.> Статус: The Elderman
|
Из MSDN: This function cannot retrieve the text of an edit control in another application.
Для межпроцессного взаимодействия (окно «находится» в чужой программе), нужно делать SendMessage с сообщением WM_GETTEXT.
Удачи.
|
| | |
Кстать заметь что через SendMessege ты не сбросишь стиль... 01.09.04 11:48
Автор: hmvs Статус: Незарегистрированный пользователь
|
> Из MSDN: This function cannot retrieve the text of an edit > control in another application. > > Для межпроцессного взаимодействия (окно «находится» в чужой > программе), нужно делать SendMessage с сообщением > WM_GETTEXT. > > Удачи.
Кстать заметь что через SendMessege ты не сбросишь стиль PASSWORDа а через PostMessage можно. Своеобразная дырка ...
|
| | | |
А по моему SetWindowLong вообще не использует сообщения 01.09.04 12:54
Автор: amirul <Serge> Статус: The Elderman
|
|
| | | | |
Зато вот что написано в MSDN. 01.09.04 13:34
Автор: hmvs Статус: Незарегистрированный пользователь
|
Зато вот что написано в MSDN.
Windows 95/98/Me: The SetWindowLong function may fail if the window specified by the hWnd parameter does
not belong to the same process as the calling thread.
|
| | | | | |
Нормульно работает эта функция... «May fail» не относится к стилю паролей поля ввода. 01.09.04 14:40
Автор: HandleX <Александр М.> Статус: The Elderman
|
|
| | |
[Win32] Ой. Глянул Edit_GetText действительно юзает GetWindowText. Пасибо за поправку 30.08.04 13:55
Автор: amirul <Serge> Статус: The Elderman
|
|
| | | |
[Win32] :) да и про keylog 30.08.04 19:22
Автор: hmvs Статус: Незарегистрированный пользователь
|
Так дело в том что не очень симпатичный метод. Мне вот люди посоветовали что через хуки внедрится в чужой процесс и внутри него уже копать, что более интересно.
Но хотелось бы литературки по этой темке.
|
| | | | |
[Win32] Как раз injection - это не очень красивый метод 31.08.04 10:38
Автор: amirul <Serge> Статус: The Elderman
|
> Так дело в том что не очень симпатичный метод. Мне вот люди > посоветовали что через хуки внедрится в чужой процесс и Тем более через хуки. Они палятся быстрее, чем что либо другое
Если винда с NT-ядром, то можешь глянуть в сторону CreateRemoteThread, если 9x - то это вообще одна сплошная дыра (hint: смотри в сторону общей для всех процессов памяти с dll-ками).
> внутри него уже копать, что более интересно. > Но хотелось бы литературки по этой темке. Самый изящный способ тот, что уже привели (со сбросом и восстановлением ES_PASSWORD-а)
|
| | | | | |
Та я вот и смотрю... Остается один главный вопрос. 01.09.04 10:26
Автор: hmvs Статус: Незарегистрированный пользователь
|
Та я вот и смотрю... Остается один главный вопрос.
А как же мне теперь отследить когда пользователь окнчательно введет пароль и нажмет на Ok ???
Ведь если поздлно притсупить окно с дитами канет в небытие. А рано можно схватить недонабраный пароль...
Есть идейки ???
|
| | | | | | |
Дык перехватывай события 01.09.04 11:02
Автор: amirul <Serge> Статус: The Elderman
|
> Та я вот и смотрю... Остается один главный вопрос. > А как же мне теперь отследить когда пользователь > окнчательно введет пароль и нажмет на Ok ??? Именно это событие и перехватывай. Пароль вводится в двух случаях: пользователь жмет на мышей на OK и пользователь жмет Enter прямо в edit-е, что в свою очередь все равно нажимает DEFPUSHBUTTON. Раз уж собрался ставить хуки - ставь. Здесь достаточно перехватить WM_COMMAND
> Ведь если поздлно притсупить окно с дитами канет в небытие. > А рано можно схватить недонабраный пароль... > Есть идейки ???
|
| | | | | | | |
Хех... Вот незнаю в какую сторону все таки пойти мне :))) А... 01.09.04 11:46
Автор: hmvs Статус: Незарегистрированный пользователь
|
> > Та я вот и смотрю... Остается один главный вопрос. > > А как же мне теперь отследить когда пользователь > > окнчательно введет пароль и нажмет на Ok ??? > Именно это событие и перехватывай. Пароль вводится в двух > случаях: пользователь жмет на мышей на OK и пользователь > жмет Enter прямо в edit-е, что в свою очередь все равно > нажимает DEFPUSHBUTTON. Раз уж собрался ставить хуки - > ставь. Здесь достаточно перехватить WM_COMMAND
Хех... Вот незнаю в какую сторону все таки пойти мне :))) А если без хуков и без драйверов всяких?
|
| | | | | | | | |
Ага. И вообще без программирования 01.09.04 12:53
Автор: amirul <Serge> Статус: The Elderman
|
Тогда легче просто спросить
|
| | | | | | | | | |
Значит все таких хуком и внедрением для перехвата wm_command... 01.09.04 13:25
Автор: hmvs Статус: Незарегистрированный пользователь
|
> Тогда легче просто спросить Значит все таких хуком и внедрением для перехвата WM_COMMAND :)))
|
| | | | | | | | | | |
Видишь ли, хук внедряется во _все_ процессы, что некрасиво. Лучше просто внедрением. 01.09.04 14:45
Автор: HandleX <Александр М.> Статус: The Elderman
|
Подумай над DLL-injection.
Описано тысячу раз ;-)
И проблем меньше — будешь сидеть сухо и комфортно в адресном пространстве нужной тебе проги.
|
| | | | | | | | | | | |
А меня интересует вообще один процесс, и в него внедряется )... 01.09.04 14:59
Автор: hmvs Статус: Незарегистрированный пользователь
|
> Подумай над DLL-injection. > > Описано тысячу раз ;-) > > И проблем меньше — будешь сидеть сухо и комфортно в > адресном пространстве нужной тебе проги. А меня интересует вообще один процесс, и в него внедряется ) Но все же если можно то кинь линки на доку по DLL-injection ибо не сталкивался я с ним. Если можно то на русском и с примерами :) Пасибки )
|
| | | | | | | | | | | | | |
Спасибо будем ковырять... 01.09.04 16:32
Автор: hmvs Статус: Незарегистрированный пользователь
|
|
| | | | |
"Копать" можно и без внедрения... ReadProcessMemory и... 30.08.04 20:38
Автор: Killer{R} <Dmitry> Статус: Elderman
|
> Так дело в том что не очень симпатичный метод. Мне вот люди > посоветовали что через хуки внедрится в чужой процесс и > внутри него уже копать, что более интересно. > Но хотелось бы литературки по этой темке. "Копать" можно и без внедрения... ReadProcessMemory и вперед. Только сомневаюсь я в результативности подобного подхода если речь идет о создании универсальной открывалки. А сделать кейлог - проще простого - STFW по SetWindowsHookEx. Но продвинутые проги могут сопротивлятся таким вещам...
ЗЫ кстати готовых показывалок паролей под звездочками довольно много...
|
|
|