![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
alexus_ru |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 4.2.2009 Пользователь №: 530 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток
У меня очень зловредный вопрос Допустим у нас есть скомпилированный exe прога на c++ под QT мы берем вторую прогу и вызываем методы первой проги. Читаем виджеты первой проги. видим все ее объекты при этом это совершенно обычная программа..без QTScriptEngine или даже ActiveX и мы получаем например все ТекстБоксы и читаем их значения, пользуясь объектной моделью QT Так делает вот эта супер программа - ![]() я никак не могу понять как это сделать( и если в принципе невозможно...то какая технология могла бы быть к этому максимально приближена? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
alexus_ru, а свои варианты есть?
П.С. не плоди копии сообщений |
|
|
SABROG |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Просто догадка. Возможно программа находит указатель qApp (QApplication), а уже через него получает все остальное: QApplication::allWidgets ()
Вторая догадка состоит в том, что программа вешает хуки на основные функции библиотеки Qt. В результате когда программа обращается к функциям Qt на самом деле проходит через прослойку. Ну или используется какой-нибудь механизм иньекции, что позволяет обращаться к методам Qt от имени самой программы. Сообщение отредактировал SABROG - 5.2.2009, 1:33 |
|
|
DmP |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 61 Регистрация: 11.3.2008 Пользователь №: 116 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
Просто догадка. Возможно программа находит указатель qApp (QApplication), а уже через него получает все остальное: QApplication::allWidgets () Скорее всего так и есть, на демо-ролике показана, что программу запускает сам Squish, потом он по видимому запускает свой поток в загруженном приложении, определяет версию Qt, потом находит QCoreApplication::self - думаю найти эту переменную в памяти не так сложно, так как она потомок QObject. А все остальное дело техники. |
|
|
alexus_ru |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 4.2.2009 Пользователь №: 530 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Скорее всего так и есть, на демо-ролике показана, что программу запускает сам Squish, потом он по видимому запускает свой поток в загруженном приложении, определяет версию Qt, потом находит QCoreApplication::self - думаю найти эту переменную в памяти не так сложно, так как она потомок QObject. А все остальное дело техники. С техникой QT у меня пока не очень ( Подскажи, пожалуйста, что необходимо изучить, чтобы знать как "запустить свой поток в загруженном приложении", "найти QCoreApplication::self в памяти" я не имею никаких догадок на этот счет. |
|
|
DmP |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 61 Регистрация: 11.3.2008 Пользователь №: 116 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
alexus_ru |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 4.2.2009 Пользователь №: 530 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
DmP |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 61 Регистрация: 11.3.2008 Пользователь №: 116 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
Погугли на тему "внедрение в чужой процесс".
Потом обычно в каждой программе QApplication расположен в стеке, когда окажешься в том же процессе, что и нужная программа пройдись по стеку и попробуй найти виртуальную таблицу QApplication, ну это как вариант. Сам такого не делал, точно сказать не могу. |
|
|
DmP |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 61 Регистрация: 11.3.2008 Пользователь №: 116 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
Есть еще вариант Accessibility, возможно это то что нужно.
|
|
|
SABROG |
![]()
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Есть еще вариант Accessibility, возможно это то что нужно. А это случаем не интерфейс для создания приложений для людей с ограниченными способностями? |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 4:58 |