Модификация программы для имитации нажатия кнопки

StackOverflow https://stackoverflow.com/questions/977045

Вопрос

У меня есть приложение MFC, которое мне предоставили (без исходного кода), которое открывает окно с кнопкой «Обновить», которая затем после нажатия выполняет очень долгое обновление.

Я хотел бы изменить программу так, чтобы при создании окна (или где-то еще, например DoModal) в программу отправлялось сообщение, чтобы она думала, что кнопка была нажата.

Я некоторое время играл с этим в Ida Pro и OllyDbg, но безрезультатно.Я рассматривал возможность использования PumpMessage, но это не принесло никакого успеха.

Любой совет?

Это было полезно?

Решение

Если вам не нравится идея использования вторичной «макропрограммы», вы можете исправить двоичный файл исходной программы, чтобы он вызывал обработчик BM_CLICK кнопки.Если вы можете найти место для вызова (минимум 5 байт без аргументов), вы можете сделать это только с помощью OllyDbg (после редактирования кода выделите его и выберите «Копировать в исполняемый файл» -> «Выбор» из контекстного меню). меню).В противном случае вам придется создать новый раздел кода с помощью PE-редактора (например,LordPE или PE Tools) и добавьте туда свой код (обычно вы хотите изменить вызов в программе на переход к вашему разделу, где вы выполняете исходный вызов плюс вызов обработчика нажатия кнопки, а затем возвращаетесь к старая позиция после исправленного прыжка).

Другие советы

Есть несколько способов сделать это, используя методы автоматизации тестирования, но самый простой — просто получить дескриптор окна нужной кнопки и отправить ей сообщение. BM_CLICK сообщение.Предполагается, что у вас есть практические знания C/C++ в Windows.Если нет, есть другие способы, использующие .NET или другие технологии.Я не знаком с ida-pro или ollydbg.

Посмотрите этот модуль perl win32::guitest, он может помочь вам в этом. Вы можете написать с его помощью сценарий Perl и встроить его в свою программу.или вы можете использовать API-интерфейс Win32, который соответствует вашим потребностям, и использовать его.

Просто создайте вторую программу, которая будет запускать ее и отправлять щелчок мышью, используя ОтправитьВвод(...)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top