2009-10-01 16 views
6

Mi sono impostato un nuovo compito che implica "spiare" sugli oggetti COM.Spiare gli oggetti COM

Anche se non si fa COM, probabilmente si conoscono le tecniche di aggancio dell'API in cui è possibile agganciarsi a una funzione importata ed eseguire il proprio codice prima di chiamare l'originale. L'hook dell'API è alquanto complesso ma diventa rapidamente disordinato (troppo disordinato per il codice di produzione IMO) se si tenta di aggancio ai metodi dell'oggetto COM.

Quindi, al momento, per fare "il mio lavoro", ho impostato un hook API per CoCreateInstance e ho inviato proxy scritti a mano per le interfacce a cui sono interessato. Ora non sono molte interfacce ma non è anche la più accurata delle soluzioni.

C'è un modo per farlo in modo più ordinato, preferibilmente senza usare l'hook API?

Su un'altra nota, questo articolo sembra essere un ottimo lavoro http://www.ddj.com/windows/184416546?pgno=5 ma il file binario non funziona più (immagino sia stato scritto intorno all'ora di Win98). Qualcuno conosce l'interno di esso e può indicarmi la direzione giusta per farlo funzionare di nuovo?

Grazie

risposta

2

Consiglio vivamente di utilizzare "Delegatore universale" di Keith Brown per eseguire l'intercettazione di basso livello. Lo strumento ComTrace menzionato da Kim Grasman lo usa. Permette di avvolgere un oggetto com arbitrario in una 'shell' che può fare intercettazioni, logging, ecc. Gli articoli originali (con codice) che descrivono il delegatore universale sono here e here.

Se si desidera spiare oggetti COM in processi arbitrari (per i quali non si dispone del codice sorgente), è necessario eseguire il codice di iniezione, utilizzando CreateRemoteThread() o qualcosa di simile. C'è un articolo here che potrebbe aiutarti a iniziare se non lo hai già fatto prima.

3

io non ho una risposta definitiva, ma so che un ragazzo che potrebbe :)

Jonas Blunck's strumenti sono tutti di intercettazione a diversi livelli, la sua ComTrace si basa sulla tecnica di Keith Brown, se ricordo correttamente e sembra simile a quello che stai facendo, tranne che analizza le librerie di tipi e le intestazioni per tenere traccia delle interfacce in modo dinamico.

Abbiamo sviluppato insieme lo sviluppatore di giochi per lo sviluppo (ho utilizzato principalmente l'interfaccia utente), è basato sull'applauso dell'API e so che Jonas ha voluto rielaborare ComTrace per utilizzare la stessa libreria di aggancio dell'API, perché ha fornito la migliore "risoluzione" per l'intercettazione .

Non so per cosa vuoi utilizzarlo, ma ti suggerisco di controllare gli strumenti di Jonas e mandargli una e-mail - potrebbe essere in grado di spronarti nella giusta direzione.

Problemi correlati