Модификация программы для подделки нажатием кнопки - PullRequest
3 голосов
/ 10 июня 2009

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

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

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

Какой совет?

Ответы [ 4 ]

3 голосов
/ 10 июня 2009

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

1 голос
/ 10 июня 2009

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

0 голосов
/ 04 декабря 2009

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

0 голосов
/ 10 июня 2009

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

...