Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Intercettare i messaggi di un'applicazione

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

Intercettare i messaggi di un'applicazione

Messaggioda DilanDog » lun dic 19, 2005 5:31 pm

Qualcuno sa se è possibile intercettare i messaggi di windows diretti ad un'applicazione lanciata come shell da un mio programma VB? A me interessa sostanzialmente cambiare l'interfaccia grafica di un programma di cui ovviamente non ho il codice sorgente. E' possibile, ad esempio, da un secondo programma in VB che gira insieme al principale lanciato via shell intercettare i messaggi di panting della finestra?

Silver Black, so che tu sai... [fischio] [applauso]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Silver Black » mar dic 20, 2005 11:06 am

Intercettare i messaggi di in'altra applicazione è una cosa che si fa tramite la tecnica del subclassing, o meglio a te servirebbe un hook globale di sistema (proprio perché la tua applicazione è diversa dalla tua).
E per tua sfortuna un hook globale è impossibile da realizzare in VB...
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda Robby78 » mar dic 20, 2005 11:38 am

[arist] mi inchino a tanta sapienza

cos'è un hook e per quale motivo non è possibnile realizzarlo in VB?[book]

P.S. se l'argomento dovesse essere troppo lungo e dispersivo, lascia perdere... è una semplice curiosità
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna


Messaggioda Silver Black » mar dic 20, 2005 12:00 pm

Robby78 ha scritto:cos'è un hook e per quale motivo non è possibnile realizzarlo in VB?[book]


Un hook è un "uncino", ossia qualcosa per "agganciare" i messaggi di Windows o di qualsiasi altra applicazione. Con l'hook globale si possono intercettare ad esempio tutti i tasti premuti, in qualsiasi applicazione, quando l'utente sposta una qualsiasi finestr,a quando viene avviata un'applicazione, e qualsiasi altro messaggio generato da/verso il sistema operativo verso/da una qualsiasi applicazione. Gli antivirus fanno uso di un hook globale, così come molti malware (per ovvi motivi).

Ci sono vari metodi per realizzare un hook, uno dei più usati è il dll injection, cioè l'inserzione del codice che vogliamo essere eseguito in una dll creata ad hoc.

In VB è possibile realizzare il subclassing, cioè l'intercettazione di tutti i messaggi della PROPRIA applicazione, ma non i messaggi delle applicazioni esterne, che è proprio l'hook globale di sistema. VB non è in grado di creare dll siffatte nè di usare i puntatori, due cose essenziali per generare un system wide hook.

Guardate qui per informazioni dettagliate su come generare qualcosa di simile in C++. Io, per la cronaca, l'ho fatto in Delphi senza alcun problema.
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda DilanDog » mer dic 21, 2005 11:06 am

Grazie mille a Silver per l'intervento e per l'esauriente spiegazione [8D]

Nel frattempo informandomi qua e là avevo trovato anch'io un articolo in cui veniva spiegato grosso modo quello che hai detto tu. Ho trovato anche una dll di esempio con relativo codice c++ che installa alcuni hook globali di esempio (mouse e tastiera) e fornisce per ogni hook una funzione di interfaccia per restituire i messaggi globali all'applicazione, in modo che possano essere poi utilizzati come uno preferisce. Sto provando a ricompilare la dll aggiungendo gli "uncini" che mi servono per avere i messaggi relativi al painting delle finestre e siccome non capisco granchè di c++ e relativo compilatore mi sa che mi ritroverò a chiedere qualcosa in merito sicuramente [:-D]

Tra l'altro una volta intercettato il messaggio che disegna la finestra dovrei "dirottarlo" verso una mia funzione personalizzata di paint...e già la vedo dura [cry]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Boo » mer dic 21, 2005 11:42 am

Silver Black ha scritto:Intercettare i messaggi di in'altra applicazione è una cosa che si fa tramite la tecnica del subclassing, o meglio a te servirebbe un hook globale di sistema (proprio perché la tua applicazione è diversa dalla tua).
E per tua sfortuna un hook globale è impossibile da realizzare in VB...

Un kernel debugger come SoftICE non va bene?
Avatar utente
Boo
Silver Member
Silver Member
 
Messaggi: 1276
Iscritto il: sab dic 04, 2004 3:41 pm

Messaggioda Silver Black » mer dic 21, 2005 11:43 am

Prego, figurati, è un piacere aiutare per me!
Anch'io non sono molto ferrato in C++, in Delphi ti aiuterei mooooolto più efficacemente! Comunque se hai domande fai pure, qui sul forum naturalmente.

A presto, buon lavoro e in bocca al lupo con la tua nuova avventura in questo interessante universo dell'hooking!
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising