2009-10-01 11 views
6

Postawiłem sobie nowe zadanie polegające na "szpiegowaniu" obiektów COM.Szpiegostwo na obiektach COM

Nawet jeśli nie używasz COM, prawdopodobnie znasz techniki zahaczania API, w których możesz podpiąć importowaną funkcję i wykonać swój własny kod przed wywołaniem oryginału. Zahaczanie API jest nieco skomplikowane, ale szybko staje się kłopotliwe (zbyt niechlujne dla kodu produkcyjnego IMO), jeśli próbujesz podłączyć się do metod COM Object.

W tej chwili, aby wykonać "moją pracę", ustawiłem interfejs API dla CoCreateInstance i wysyłam ręcznie napisane serwery proxy dla interfejsów, które mnie interesują. Teraz to nie jest wiele interfejsów, ale to nie jest najmodniejsze z rozwiązań.

Czy można to zrobić w bardziej przejrzysty sposób, najlepiej bez użycia funkcji API?

W innej notatce ten artykuł wydaje się być świetnym dziełem http://www.ddj.com/windows/184416546?pgno=5, ale plik binarny już nie działa (domyślam się, że został napisany w czasie Win98). Czy ktokolwiek zna jego wnętrze i może wskazać mi właściwy kierunek, aby ponownie zadziałał?

Dzięki

Odpowiedz

2

Zdecydowanie polecam używanie "Powielacza uniwersalnego" Keitha Browna do przechwytywania niskiego poziomu. Narzędzie ComTrace wymienione przez Kim Grasman używa go. Pozwala owinąć dowolny obiekt com w "powłokę", która może wykonywać przechwytywanie, rejestrowanie itp. Oryginalne artykuły (z kodem) opisujące uniwersalnego delegata to: here i here.

Jeśli chcesz szpiegować obiekty com w arbitralnych procesach (których nie masz), musisz również wykonać wtrysk kodu, używając CreateRemoteThread() lub czegoś podobnego. Jest artykuł here, który może Ci pomóc, jeśli jeszcze tego nie zrobiłeś.

3

nie mam ostateczną odpowiedź, ale znam faceta, który może :)

Jonas Blunck's narzędzia są o przechwycenie na różnych poziomach, jego ComTrace opiera się na technice Keitha Browna, jeśli dobrze pamiętam i brzmi podobnie do tego, co robisz, oprócz tego, że parsuje biblioteki i nagłówki, aby dynamicznie śledzić interfejsy.

Wspólnie napisaliśmy Developer Playground (głównie zrobiłem interfejs użytkownika), bazuje on na API hooking i wiem, że Jonas powiedział, że chce przerobić ComTrace, aby używał tej samej biblioteki zahaczającej API, ponieważ dawał najlepszą "rozdzielczość" do przechwytywania .

Nie wiem, czego chcesz użyć, ale sugeruję, abyś sprawdził narzędzia Jonasa i zastrzelił mu e-mail - może być w stanie popchnąć cię we właściwym kierunku.