Domanda

Ho un'applicazione MFC che mi è stata data (senza codice sorgente), che apre una finestra con il tasto di un 'aggiornamento', che poi esegue una lunghissima aggiornamento dopo essere cliccato.

Mi piacerebbe modificare il programma in modo che, quando viene creata la finestra (o da qualche altra parte, come DoModal), viene inviato un messaggio al programma per renderlo pensare che il pulsante è stato premuto.

I Smanetto con questo per un po 'in Ida Pro e OllyDbg inutilmente. Ho guardato possibilmente utilizzando PumpMessage, ma questo non ha portato alcun successo.

Qualche consiglio?

È stato utile?

Soluzione

Se non ti piace l'idea di utilizzare un programma secondario "macro", si potrebbe rattoppare binario del programma originale per chiamare gestore BM_CLICK del pulsante. Se si riesce a trovare un po 'di spazio per la chiamata (minimo 5 byte senza argomenti), si può fare questo con il solo OllyDbg (dopo la modifica del codice, selezionarla e selezionare "Copia di eseguibili" -> "Selezione" dal tasto destro del mouse menu). In caso contrario, sarà necessario creare una nuova sezione di codice con un editor di PE (ad es LordPE o Strumenti PE) e aggiungere il codice lì (in genere si vorrà cambiare una chiamata nel programma per un salto alla sezione, in cui si eseguire la chiamata originale più la chiamata al gestore click del pulsante, poi tornare alla vecchia posizione dopo il vostro salto patchato).

Altri suggerimenti

Ci sono alcuni modi per farlo utilizzando tecniche di automazione di test, ma il più semplice è quello di ottenere semplicemente la maniglia della finestra per il pulsante che si desidera e inviarlo a messaggio BM_CLICK . Ciò presuppone che si dispone di una conoscenza di C / C ++ su Windows. In caso contrario, ci sono altri mezzi che utilizzano .NET o altre tecnologie. Non ho dimestichezza con ida-pro o OllyDbg.

Vedere questo modulo Perl win32 :: guitest potrebbe aiutare a fare this.you può scrivere con esso uno script Perl e integrarlo nel vostro programma. oppure è possibile utilizzare API Win32 che avvolgono le vostre esigenze richieste e usarlo.

Basta creare un secondo programma che sarà il pranzo e invierà un clic del mouse utilizzando SendInput (...)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top