Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2008, 12:52   #1
barand
Пользователь Подтвердите свой е-майл
 
Регистрация: 21.06.2008
Сообщений: 12
По умолчанию Как сделать так, чтобы переключение между окнами было автоматическим?

Друзья! Всем доброе время суток!
В общем, из названия темы всё понятно. Теперь комментарии.

Предположим, что у нас открыта сmd Набираем в сmd имя некоторого созданного нами исполняемого файла и выполняется такая прорамма:
1) Открывается окно некоторой программы <имя_программы>
2) По некоторому событию управление переходит опять на cmd

Вот схематично и всё. Что за событие имеется ввиду? Любое. Для простоты возьмём, пусть управление на cmd передастя, если... допустим, если программа <имя_программы> имеется ввиду Olly Debug, то есть открываем программу из cmd с некоторым файлом и начинаем его трассировать. И пусть управление на cmd передастся по нажатию клавиши F8 (то есть событие такое: нажатие клавиши F8, как следствие переход на один шаг. Вот после этого события пусть управление на cmd передастся.)

Это, конечно, сложный вопрос, но вот к какому выводу я пришёл и хотел бы, чтобы Вы меня поправили. Вывод прост: описанные действия можно совершить, только (!) если изменить код Olly Debag. То есть, если в коде где-то написано, что по нажатию F8 происходит то-то и то-то, то мы можем сделать одну из двух вещей:
1) Изменить последствия нажатия клавиши F8 на нужные нам
2) Ничего не изменять, а добавить. То есть выбрать какую-нибудь незадействованную клавишу и повесить на неё функцию клавиши F8 (выполнение команды без захода в эту команду) и плюс передача управление на сmd

Хотел был привести другой какой-нибудь пример, допустим, не с Olly Debug, а с тем-же калькулятором, но почему-то посчитал, что с Olly Debug будет попонятнее. (То есть вызов каклькулятора из cmd, выполнение некоторого действия (предположим, нажатие на цифру 5) и возврат на cmd. В этом случае итзменять надо было бы уже код программы- калькулятора.) Так или не так?

Так или не так?

Ответьте, пожалуйста на этот вопрос. Я в правильном напрвлении мыслю? Больше я ничего не прошу (слишком сложно потому что).

P. S. А с того всё началось, что я задумал автоматизировать трассировку...
P. P. S. Ну и подпните куда нибудь, буду только рад. "Автоматическое переключение между окнами", набранное в google или яndex, ничего не даёт...

Последний раз редактировалось barand; 07.07.2008 в 13:01.
barand вне форума Ответить с цитированием
Старый 07.07.2008, 13:09   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если напустить ещё чуть-чуть туману, вообще никто не поймёт, что Вы хотите сделать. Не нужно изменять ничей код, для всего этого предназначены хуки. Всё это обсуждалось миллион раз, пользуйтесь поиском по форуму по SetWindowsHookEx. В упор не вижу, где в вопросе ассемблер, посему переносится в "Свободное общение"
B_N вне форума Ответить с цитированием
Старый 07.07.2008, 13:14   #3
barand
Пользователь Подтвердите свой е-майл
 
Регистрация: 21.06.2008
Сообщений: 12
По умолчанию

Как где ассемблер?
Если изменять код программы, так это нужно смотреть её в отладчике. А тот, в свою очередь, преобразует машинный код в ассемблерный. Вот его и меняешь. Вот Вам и ассемблер.

Я посто не знал, что код менять не надо и не знал, что существует понятие хук.
barand вне форума Ответить с цитированием
Старый 07.07.2008, 14:31   #4
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

В упор не виу где здесь общение, посему переносится в "Помощь студентам"
Viteef вне форума Ответить с цитированием
Старый 07.07.2008, 14:53   #5
barand
Пользователь Подтвердите свой е-майл
 
Регистрация: 21.06.2008
Сообщений: 12
По умолчанию

Ну, пусть "помощь студентам", мне всё равно, лишь бы помогли. Только надо именно ассемблер по причине, указанной выше.
Впрочем, мне уже сказали, насчёт хука. Наверное, это исчерпывающая помощь. Буду разбираться.

А всё-таки, хоть убей, но я не пойму, почему код программы менять не надо. Нет, вот где изъян в рассуждениях: нам надо, чтобы программа повела себя некоторым образом, отличным от заданного (ну, пусть для простоты возьмём, что бы управление не на другое окно переключилось, а чтобы программа закрылась. Ну, например)
...Да в конце концов, любое изменение выполнения предусмотренного программой кода, предполагает изменение этого кода. С помощью нечто, называемого хуком или без него- это уже второй вопрос. Но мне говорят, что код менять не надо. И не объясняют, почему.

Ну, не надо, так не надо, что ещё сказать. Буду сам разбираться.
barand вне форума Ответить с цитированием
Старый 07.07.2008, 15:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Ничего конкретного - посему переношу в Общение.

По поводу темы - код то менять надо, но есть несколько уловок: Ловить сообщения и менять их на другие. Например проге (окну ее) идет сообщение WM_ACTIVE перехватчик меняет ее на WM_CLOSE.
Второе это DebugAPI, но я не очень пойму смысл задачи? Пропатчить (взломать, реинженирить) программу? Так это с Олли делать легко и удобно, свою прогу писать не обязательно (разве что для саморазвития)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.07.2008, 15:17   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от barand Посмотреть сообщение
А всё-таки, хоть убей, но я не пойму, почему код программы менять не надо. Нет, вот где изъян в рассуждениях: нам надо, чтобы программа повела себя некоторым образом, отличным от заданного (ну, пусть для простоты возьмём, что бы управление не на другое окно переключилось, а чтобы программа закрылась. Ну, например)
...Да в конце концов, любое изменение выполнения предусмотренного программой кода, предполагает изменение этого кода. С помощью нечто, называемого хуком или без него- это уже второй вопрос. Но мне говорят, что код менять не надо. И не объясняют, почему.

Ну, не надо, так не надо, что ещё сказать. Буду сам разбираться.
barand, разбирайтесь с архитектурой операционных систем и принципами их работы. Даже под досом не всегда обязательно было менять код программы, чтобы добиться каких-либо изменений в её работе. Все данные, которые получает приложение, берутся не из воздуха, а поступают от ОС, оторая предоставляет документированные и недокументированные, "законные" и не очень, механизмы, позволяющие просмотреть, изменить или отбросить эти данные. Разберитесь с хуками, информации по ним предостаточно, будут вопросы - задавайте. И, разумеется, в разделе, который соответствует вопросу, чтобы не футболить потом Вашу же тему.
B_N вне форума Ответить с цитированием
Старый 07.07.2008, 15:58   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
Смех

BN смотрит куда же послать мяч, длинная продольная передача, мяч перехватывает Viteef, Удар!!! Штанга! Stilet забирает мяч и сильным ударом переправляет его на сторону противника.
Второй тайм смотрите после выпуска новостей.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 07.07.2008, 22:35   #9
barand
Пользователь Подтвердите свой е-майл
 
Регистрация: 21.06.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
но я не очень пойму смысл задачи? Пропатчить (взломать, реинженирить) программу?
Я не знаю таких слов. Неужели я непонятно говорю?: изменить ход программы. Более того: я конкретизирую задачу. Пусть открыта программа- калькулятор. Пусть набрана цифра "5". И пусть после этого программа- калькулятор закроется. Сама. Всё.

Это тяжело? Ну, хорошо, тяжело. Ну, приведите пример полегче. Неохота? Добре. Верю и понимаю.

Но зачем говорить, что непонятно? Что непонятного-то? Я имею виду в постановке задачи. Что неконкретно? Куда конкретнее-то? Или у нас разные программы-калькуляторы? Или у меня не Windows? Так я бы оговорил. Скажите, как ещё конретнее можно поставить вопрос и я замолчу.

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

Последний раз редактировалось barand; 07.07.2008 в 22:45.
barand вне форума Ответить с цитированием
Старый 07.07.2008, 22:54   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

barand, зря обижаетесь - те "слова", что привёл Stilet - это как раз то, что Вы и хотели сделать изначально. И, судя по всему, не хотите Вы воспользоваться советами. Вот здесь, по счастливому совпадению, именно "модификация" калькулятора с помощью хуков. Есть на форуме и масса более простых примеров.
B_N вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы форму можно было тостать не только за заголовок? Никки Общие вопросы Delphi 1 04.09.2008 13:34
Как сделать так чтобы окно формы всегда было поверх остальных окон? HelloZAPOR Общие вопросы Delphi 5 23.07.2007 07:05
Подскажите, как сделать так, чтобы тест можно было повторно пройти не перезагружая пр Kamikadze_666 Помощь студентам 2 23.05.2007 01:48
сделать так, чтобы CheckBox и CheckListBox нельзя было отмечать вручную Washington Компоненты Delphi 7 24.03.2007 16:59
Как запретить переход между диалоговыми окнами. dnkR Общие вопросы Delphi 1 18.01.2007 06:59