Windows COM 런타임을 후크하는 데 사용할 수있는 도구가 있습니까? 생성 된 모든 인스턴스를보고 해당 인터페이스에 대한 쿼리를보고 메서드 호출 등을 볼 수 있기를 원합니다.Windows COM 런타임에 연결
고마워요!
Windows COM 런타임을 후크하는 데 사용할 수있는 도구가 있습니까? 생성 된 모든 인스턴스를보고 해당 인터페이스에 대한 쿼리를보고 메서드 호출 등을 볼 수 있기를 원합니다.Windows COM 런타임에 연결
고마워요!
를 "세계 최고의 COM 전문가 돈 상자"를 말해야한다? - 잘 모르겠어요은 Windows 7에서 작동하는 경우 만입니다 가치가있는 시도.
in-proc COM 서버에는 소비자가 CoCreateInstance() 또는 CoGetClassObject()를 호출하는 것이 거의 없습니다. 그게 전부입니다. 나머지는 COM 개체 구현 내부에서 수행됩니다. ATL 소스를 보면 내부에서 일반적으로 작동하는 방식을 볼 수 있습니다. 예를 들어 소비자가 QueryInterface()를 호출하면 호출이 해당 객체로 직접 이동하고 객체 자체가 호출을 관측하는 유일한 엔티티입니다.
이것은 매우 운이 좋은 것은 아니지만 in-proc COM 서버가 구현되는 방법의 직접적인 결과입니다. 개발자는 Process Monitor을 사용하여 ClassId -> Dll 매핑 검색 및 COM 개체 내부의 광범위한 추적에 해당하는 레지스트리 액세스를 확인할 수 있습니다. ATL은 추적을 통합하기 위해 COM_INTERFACE_ENTRY_FUNC_BLIND 매크로와 같은 유용한 기능을 제공합니다.
그러나 표준 COM 런타임 라이브러리가 CoCreateInstance를 구현하지 않습니까? 서버에 정적으로 링크되어 있지 않으면이 함수를 전역 적으로 연결할 수 있어야합니다. 그리고 proc 서버는 어떨까요? 메서드에 대한 모든 소비자 호출이 정렬되므로 이러한 호출을 가로채는 방법이 있습니까? – Danra
내가 알고있는 쉬운 방법이 없습니다. 물론 CoCreateInstance()를 구현하는 .dll 파일에 연결할 수 있지만 우아하고 쉬운 솔루션은 아닙니다. – sharptooth
나는 이것이 내가하고 싶은 일이기 때문에 COM 라이브러리에 연결하는 것이 완벽하게 우아하다고 느낀다. 나는 이런 종류의 후킹을하고 멋지게 결과를 제공하는 도구를 모른다. (스파이 ++ 스타일을 제외하고) COM 객체 및 윈도우가 아닌 핸들링). – Danra
http://www.nektra.com/products/com-spy-console을 확인하십시오. 무료입니다.
시스템 dll에 연결하고 조회 된 인터페이스에 맹인 위임자를 삽입해야하는 항목을 모니터 할 수 있습니다. 이 작업이 얼마나 복잡하고 오류가 발생하기 쉬운지는 말할 필요도 없으며, 특히 많은 구현자가 COM 원리를 정확하게 따르지 않는다고 생각하면 그렇습니다. 하지만 일부 응용 프로그램은이 기능을 노출하지 않고 자신의 목적을 위해이를 수행합니다.
당신이 정말이 길을 갈려면 -이 한 번 봐 걸릴 :
좋은 물건. 인터페이스가 완벽하지는 않지만 그 자체가 작동합니다. – sharptooth