Как найти точку входа метода интерфейса?

Тема в разделе "WASM.RESEARCH", создана пользователем Johnson7, 4 фев 2005.

  1. Johnson7

    Johnson7 New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    2
    Есть некая COM DLL, написана на MFC, как в ней найти код некоего метода, имя которого известно
     
  2. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    А что тогда известно?
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    видимо то что это "некая com dll"
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Посмотреть DllGetClassObject ?
     
  5. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    У всех номальных СОМ-дллек DllGetClassObject возвращает экземпляр IClassFactory. Так что через IClassFactory::CreateInstance(...), либо CoCreateInstance получить указатель на объект нужного класса. Первый DWORD в объекте класса - указатель на виртуальную таблицу, если знаешь порядок методов в виртуальной таблице - то дальше понятно, отсчитываешь нужный указатель, он и указывает на код метода.
     
  6. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Гы-гы, OLEVIEW рулит.
     
  7. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    volodya

    А как в OLEVIEW посмотреть адрес метода класса?
     
  8. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    _Juicy

    такой метод не сработает для dispinterface.
     
  9. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Адрес метода - никак. Только через CreateInstance и этой vtbl. А имя метода - вполне. Да и то, как greenзаметил, для дуальных интерфейсов не покатит эта примочка. Ненавижу COM. Ну и технология, мля... Ее вообще никто не понимает. Даже изобретатель от нее отрекся.
     
  10. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    green

    Во-первых, далеко не факт, что не сработает. Редкий разработчик станет создавать СОМ-провайдер ТОЛЬКО для аутомейшн-клиентов(насколько мне кажется).

    Во-вторых, да. :) Если не сработает, нужно ковырять IDispatch.

    volodya

    Никто не понимает, но все пишут :)
     
  11. Johnson7

    Johnson7 New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    2
    Имя метода известно, в общих чертах понял, буду разбираться