информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Ага. И вообще без программирования 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 ибо не сталкивался я с ним. Если можно то на русском и с примерами :) Пасибки )
Гугль в помощь (updated) 01.09.04 15:47  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 01.09.04 15:50  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
http://www.google.com/search?q=dll+injection&sourceid=opera&num=25&ie=utf-8&oe=utf-8
-------------

Хотя я бы предпочел просто заменить WindowProc

Для WinNT-совместимых CreateRemoteThread(), а потом SetWindowLong с GWL_WNDPROC (не забыть предварительно сохранить старый WndProc).
Спасибо будем ковырять... 01.09.04 16:32  
Автор: hmvs Статус: Незарегистрированный пользователь
<"чистая" ссылка> <обсуждение закрыто>
"Копать" можно и без внедрения... ReadProcessMemory и... 30.08.04 20:38  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Так дело в том что не очень симпатичный метод. Мне вот люди
> посоветовали что через хуки внедрится в чужой процесс и
> внутри него уже копать, что более интересно.
> Но хотелось бы литературки по этой темке.
"Копать" можно и без внедрения... ReadProcessMemory и вперед. Только сомневаюсь я в результативности подобного подхода если речь идет о создании универсальной открывалки. А сделать кейлог - проще простого - STFW по SetWindowsHookEx. Но продвинутые проги могут сопротивлятся таким вещам...
ЗЫ кстати готовых показывалок паролей под звездочками довольно много...
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach