Форум программистов, компьютерный форум CyberForum.ru

Передача сообщений в окно - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
19.06.2011, 15:54     Передача сообщений в окно #1
Есть прогрмка , написаная мной же с использованием MFC в которой имеется поле для ввода и кнопка.
По нажатию кнопки из текстового поля считывается содержимое сравнивается с некоторой строкой "паролем" и в еще одном поле выводится : угадан или не угадан пароль.


Помогите написать что-то что смогло бы *перебирать* пароли, нажимать кнопку.
Погугллив я нашел вроде, что это делается через сообщения типо sendMessage(,,,,);
но вот не могу понять ни как узнать параметры для этой функции, ни как ее использовать

Буду рад простым примерам программ , которые передают какому либо окну какое-либо сообщение (хоть нажатие кнопочки), ну и ссылкам на ресурсы где это доступно описано.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.06.2011, 16:15     Передача сообщений в окно #2
http://www.firststeps.ru/mfc/steps/help/r.php?259
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
19.06.2011, 16:16     Передача сообщений в окно #3
::SendMessage(дескриптор элемента-HWND, идентификатор сообщения, 1-параметр, 2 - параметр)

C++
1
2
3
4
5
6
7
8
9
10
void CApplicationDlg::OnButton1() 
{
    HWND w = ::GetDlgItem(m_hWnd, IDC_EDIT1);
    ::SendMessage(w, EM_SETPASSWORDCHAR, (WPARAM) '*', LPARAM(0));
    char  c = (char) ::SendMessage(w, EM_GETPASSWORDCHAR, WPARAM(0), LPARAM(0));
 
    if(c == '*' )
        MessageBox("YES", "PASSWORD", MB_OK | MB_ICONINFORMATION);
 
}
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
19.06.2011, 19:53  [ТС]     Передача сообщений в окно #4
возможно для этого нужна какая-то vs новая?
у меня 2008 пишет много всего нехорошего


error C2065: 'HWND' : undeclared identifier
error C2146: syntax error : missing ';' before identifier '_hwnd'
error C2065: '_hwnd' : undeclared identifier
error C2653: 'std' : is not a class or namespace name


хотя windows.h и winuser.h подключены
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
19.06.2011, 22:48     Передача сообщений в окно #5
Там в сообщении N 15 я пришёл к какому-то выводу:
Имитация клавишь в другом окне
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 22:49  [ТС]     Передача сообщений в окно #6
Замечательно!

Спустя 4 дня поисков что-то заработало )


Смог (ну точнее ваша программа смогла) ввести в поле ввода !
Ну я думаю теперь дело быстрее пойдет, всегда главное найти первый пример который заработает)


Короче, еще раз спасибо.


сейчас попробую кнупку нажимать таким же способом
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.06.2011, 23:04     Передача сообщений в окно #7
Побаще будет
Управление калькулятором из другой программы
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:14  [ТС]     Передача сообщений в окно #8
Все, в текстовое поле сообщение вводится, кнопочка нажимается, остался один вопрос:

а как стирать содержимое текстового поля? ну то есть чтобы организовать перебор нада подставлять(готово), проверять (готово), стирать ( =( ) и заново

как-то нада сообщение (<-) передавать ?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.06.2011, 23:33     Передача сообщений в окно #9
Ну наверное, это ты смотри справочник по сообщениям окну, здесь тоже можешь глянуть, может найдёшь чё, щас в личку напишу
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
20.06.2011, 23:40     Передача сообщений в окно #10
Цитата Сообщение от ruscrypto Посмотреть сообщение
а как стирать содержимое текстового поля? ну то есть чтобы организовать перебор нада подставлять(готово), проверять (готово), стирать ( =( ) и заново
C
1
SetWindowText(hwnd, "");
Добавлено через 3 минуты
Цитата Сообщение от ruscrypto Посмотреть сообщение
Помогите написать что-то что смогло бы *перебирать* пароли, нажимать кнопку.
имхо не вижу целесообразности в подобной программе, кроме упражнения в программировании. т.к. проще реверсить исходный код испытуемой программы и определить пароль, чем перебирать. Кстати, каноническая защита от брутфорса - если не верный пароль поспим с секунду перед тем как вернуть ответ о неверном пароле. Данный метод делает брутфорс практически невозможным.
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:42  [ТС]     Передача сообщений в окно #11
SetWindowText(hwnd, "");

не работает, как ни жаль (
просто ничего не происходит, никаких ошибок, но текст остается на своем месте


Да, исключительно упражнение в программировании
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
20.06.2011, 23:48     Передача сообщений в окно #12
C
1
SetWindowText(идентификатор_текстового_окна, "");
Добавлено через 40 секунд
Запостите полный исходник, чтобы мы не играли в испорченный телефон

Добавлено через 3 минуты
или попробуйте функцию
C
1
SendMessage( hwnd, WM_SETTEXT, 0, 0 );
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:57  [ТС]     Передача сообщений в окно #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#define MY_BUFSIZE 1024   
int main () {
 
 
 char bufer_dla_vvodim_simv [MY_BUFSIZE];
 HWND DeskriptorOkna;
 HWND DeskriptorKnki;
 
 //Поехали
 printf ("vvodi deskriptor okna  ");
 scanf ("%d", &DeskriptorOkna);
  printf ("vvodi deskriptor knopki  ");
 scanf ("%d", &DeskriptorKnki);
 
  fflush (stdin);
 printf ("vvodi text\n");
 gets (bufer_dla_vvodim_simv);
  
  for (int i= 0; bufer_dla_vvodim_simv[i]; i++ ) {
 
  PostMessage (DeskriptorOkna,WM_CHAR, bufer_dla_vvodim_simv[i], 1);
 } 
 PostMessage (DeskriptorKnki,BM_CLICK, 0,0);
 
 
 
 for(int t = 0;t<10;t++)
    PostMessage (DeskriptorOkna,WM_CHAR, 0x08, 1);
 
 
 return 0;
}


вот так заработало как я хотел
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
21.06.2011, 00:17     Передача сообщений в окно #14
вместо цикла с посылкой WM_CHAR на каждый элемент массива используйте сообщение WM_SETTEXT и тогда ничего затирать не нужно будет, обработчик окна сам за вас все сделает при обработке сообщения WM_SETTEXT (псевдокод):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  // ...
  // в буфере пароль - строка с завершающим нулевым символом
  for (;;)
  {
      // инкрементировали буфер
      // назначем edit текст
      PostMessage(DeskriptorOkna, WM_SETTEXT, 0, (LPARAM)buffer);
      // нажимаем кнопку
      PostMessage( DeskriptorKnki, BM_CLICK, 0, 0);
      if (угадали_пароль) break;
  }
  радоваться_отгаданному_паролю();
  откупорить_бутылку_пива();
  // ...
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 15:57  [ТС]     Передача сообщений в окно #15
Почему Object Viewer может не видеть окошко?

Есть программа, в которую мы подставляем значения, но она немного умнее той что я написал : она после неправильно введенного пароля выкидывает окошко , где нада опять же нажать кнопку , чтобы попробывать еще раз

Так вот object не видит ни окошко ни кнопку в нем оО?
А пока открыто это окошко ( о неправильном вводе) основное окно ни закрыть ни кнопки потыкать...
Миниатюры
Передача сообщений в окно  
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
21.06.2011, 16:10     Передача сообщений в окно #16
Цитата Сообщение от ruscrypto Посмотреть сообщение
Так вот object не видит ни окошко ни кнопку в нем оО?
Ну как это не видит - BorBtn это и есть кнопки. Вы раньше нажимали кнопки из WinAPI, а это просто реализация кнопок из Борландовской старой библиотеки OWL.

Добавлено через 2 минуты
Но если вы собрались заниматься брутфорсом данной проги имхо много быстрее будет найти внутри программы верные ответы.
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 16:14  [ТС]     Передача сообщений в окно #17
Неа, это он видит кнопочки которые в окошке основном, а кнопку ОК он не видет
он видит три кнопки (как я понимаю это окей (левого окна) хелп и кансел
а второй окей не видит

Добавлено через 3 минуты
Найти ответы внутри самой прги это конечно заманчиво)
Это делается чем-то типо IDA ? я просто только приблизительно знаю что это, да и асемблер у меня только в следующем семестре)
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
21.06.2011, 16:19     Передача сообщений в окно #18
Вы про сообщение об ошибке? Это скорее всего функция типа MessageBox, только реализованная внутри OWL. Получить хендл этого окна можно вызвав, например GetForegroundWindow() а потом этому окну послать код клавиши Enter через функцию keybd_event() - отработает дефолтная кнопка - т.е. кнопка ОК.
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 16:28  [ТС]     Передача сообщений в окно #19
так а вопрос про вытаскивание ответов из самой проги?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2011, 16:46     Передача сообщений в окно
Еще ссылки по теме:

C++ Механизм сообщений в QNX
C++ Последовательность сообщений
C++ Создать окно с кнопкой, закрывающей это окно

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
21.06.2011, 16:46     Передача сообщений в окно #20
Прога большая? можете запостить?

Не по теме:

просто, когда человеку полезен ответ, он нажимает на "Спасибо", т.к. вы этого не делаете, подумалось, что я досаждаю Вам своими постами

Yandex
Объявления
21.06.2011, 16:46     Передача сообщений в окно
Ответ Создать тему
Опции темы

Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru