2009-10-01 9 views
6

Ich habe mir eine neue Aufgabe gestellt, bei der COM-Objekte "ausspioniert" werden.Ausspionieren von COM-Objekten

Auch wenn Sie COM nicht verwenden, sind Sie wahrscheinlich mit API-Hooking-Techniken vertraut, bei denen Sie eine importierte Funktion haken und Ihren eigenen Code ausführen können, bevor Sie das Original aufrufen. API-Hooking ist etwas komplex, aber es wird schnell unordentlich (zu unordentlich für Produktionscode IMO), wenn Sie versuchen, COM-Objektmethoden zu haken.

Also, im Moment, um "meine Arbeit" zu tun, legte ich einen API-Hook für CoCreateInstance und ich handgeschickte Proxies für die Schnittstellen, die ich interessiert sind. Nun, das ist nicht viele Schnittstellen, aber es ist nicht das ist die beste Lösung.

Gibt es eine Möglichkeit, dies auf eine sauberere Weise zu tun, vorzugsweise ohne API-Hooking?

Auf einer anderen Anmerkung, scheint dieser Artikel, große Arbeit http://www.ddj.com/windows/184416546?pgno=5 zu sein, aber die binäre Arbeit nicht mehr (ich denke, dass es um Win98 Zeit geschrieben wurde). Kennt jemand die Interna davon und kann mich in die richtige Richtung zeigen, damit es wieder funktioniert?

Dank

Antwort

2

Ich würde auf jeden Fall empfehlen, Keith Browns "Universal Delegator" zu verwenden, um die Low-Level-Überwachung durchzuführen. Das von Kim Grasman erwähnte ComTrace-Tool verwendet es. Sie können ein beliebiges com-Objekt in eine "Shell" einfügen, die abfangen, protokollieren usw. kann. Die Originalartikel (mit Code), die den universellen Delegierer beschreiben, sind here und here.

Wenn Sie COM-Objekte in beliebigen Prozessen (für die Sie nicht die Quelle haben) ausspionieren möchten, müssen Sie Code-Injection durchführen, indem Sie CreateRemoteThread() oder etwas ähnliches verwenden. Es gibt einen Artikel here, der Sie vielleicht in den Startlöchern bringt, wenn Sie es vorher noch nicht getan haben.

3

Ich habe keine definitive Antwort, aber ich kenne einen Mann,

Jonas Blunck's Werkzeuge sind alle über das Abfangen auf verschiedenen Ebenen, ist seine ComTrace basiert auf Keith Brown sprühte :) könnte, Wenn ich mich recht erinnere, klingt es ähnlich wie das, was Sie tun, außer dass er Typbibliotheken und Header analysiert, um die Schnittstellen dynamisch zu verfolgen.

Wir haben Developer Playground zusammen geschrieben (ich habe meistens UI), es basiert auf API Hooking, und ich weiß, Jonas wollte ComTrace überarbeiten, um die gleiche API Hooking Bibliothek zu verwenden, weil es die beste "Auflösung" für Interception gab .

Ich weiß nicht, wofür du das verwenden willst, aber ich schlage vor, du überprüfst Jonas 'Werkzeuge und schießt ihm eine E-Mail - er könnte dich in die richtige Richtung stoßen.

Verwandte Themen