Определить, предоставляет ли исполняемый файл COM-интерфейс?

Обсуждение вопросов, касающихся указанной технологии.
kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Определить, предоставляет ли исполняемый файл COM-интерфейс?

Сообщение kiber_punk » 28.03.2011 (Пн) 16:29

Какие есть способы (минимально достаточные и желательно без обращения к WinAPI, [интересны все]) для идентификации файла как COM-объекта?

Пока на ум приходит только проверка на существование в файле функции DllGetClassObject.
Может есть другие простые способы и без вызовов API? (Пишу WSH-скрипт - он не имеет работать с WinAPI, а хочется обойтись штатными средствами системы).
Спасибо за любые идеи и подсказки.
Mea culpa

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение kiber_punk » 28.03.2011 (Пн) 17:50

* проверка на существование в таблице импорта файла функции DllGetClassObject.
Mea culpa

NashRus
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение NashRus » 28.03.2011 (Пн) 23:55

Если под исполняемым подразумевается только EXE файл, то тогда с определенной степенью надежности можно смотреть реестр.
Если совсем на шару, то искать в файле ключи запуска, такие как /regserver или как-то так.
Если все таки смотреть еще и DLL, то дополнительно можно смотреть функции экспорта, которые юзает, например, regsvr32.

ну т.е. как-то детектировать признаки COM-а.

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение kiber_punk » 29.03.2011 (Вт) 5:06

Под исполняемым файлом подразумевается кгхм..."исполняемый файл" - вполне официальное название типа файлов - exe,dll,ocx*
*ocx - это всегда COM, так что с ним вопросов быть нет.
exe в принципе не так важен, всё ради dll - отличить обычную dll-ку от COM-сервера (в целях катологизации и дальнейшей обработки).
Если совсем на шару, то искать в файле ключи запуска, такие как /regserver или как-то так.

Эмм...как Вы себе это представляете?

Если все таки смотреть еще и DLL, то дополнительно можно смотреть функции экспорта

Ну да об этом я сразу упомянул, DllRegisterServer всегда идёт вместе с DllGetClassObject (вторая функция в данном случае релевантнее).

Повторюсь: WSH-скрипт (vbs), доступа к WinAPI нету.

И только что в голову пришла true'шная идея ^_^
- однозначно идентифицировать сигнатуру\шапку ActiveX-либы.
Mea culpa

NashRus
Постоялец
Постоялец
 
Сообщения: 363
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение NashRus » 29.03.2011 (Вт) 6:38

kiber_punk писал(а):..."исполняемый файл" - вполне официальное название типа файлов - exe,dll,ocx*

kiber_punk писал(а):проверка на существование в таблице импорта файла функции DllGetClassObject.


Официальное, официальное, как и официальное название таблицы: таблица экспорта.
Отсюда я и не понял, при чем тут таблица импорта.

kiber_punk писал(а):Эмм...как Вы себе это представляете?


Что именно? Как в файле искать или что?
Эта фраза относилась к EXE, где в теле файла есть специфичные строки - ключи запуска.
Наверное стоит повториться, чтобы не быть опять процитированным: на шару.
А вообще искать любые признаки COM.

kiber_punk писал(а):вторая функция в данном случае релевантнее


Релевантнее 4 функции смотреть.

kiber_punk писал(а):Повторюсь: WSH-скрипт (vbs), доступа к WinAPI нету.


Есть много способов: встроенные объекты шелла, утилиты командной строки, да и dllhost.exe никто не отменял.
Не считая, если допускается возможность регистрации своих самописных библиотек.

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение kiber_punk » 29.03.2011 (Вт) 17:40

Отсюда я и не понял, при чем тут таблица импорта.

Перепутал "экспорт" и "импорт" когда писал сообщение.
Есть много способов: встроенные объекты шелла, утилиты командной строки, да и dllhost.exe никто не отменял.
Не считая, если допускается возможность регистрации своих самописных библиотек.


Объекты шелла ("wscript.shell" и иже с ним) отпадают сразу - ибо нет таковых способных выполнить данную задачу, утилиты ком. строки в туже стопку (насколько я знаю).

Можно конечно подключить DynamicWrapper[X] и к нему обращаться. Но задача обойтись штатными средствами системы, поэтому доп. библиотеки отпадают (да и не по-кодерски это - в каждом случае сторонние компоненты юзать :)).

А вот про dllhost.exe поподробнее, если можно. Похоже что-то интересное.
Mea culpa

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4258
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение iGrok » 29.03.2011 (Вт) 17:47

А что, прочитать документацию по формату PE, прочитать заголовки, разобрать их и найти там таблицу экспорта и список экспортируемых функций - это уже не ТРУъ, да?
label:
cli
jmp label

kiber_punk
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 11.01.2011 (Вт) 2:23

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение kiber_punk » 01.04.2011 (Пт) 1:28

iGrok:
А что, прочитать документацию по формату PE, прочитать заголовки, разобрать их и найти там таблицу экспорта и список экспортируемых функций - это уже не ТРУъ, да?

Эмм.. я это и имел ввиду когда писал:
- однозначно идентифицировать сигнатуру\шапку ActiveX-либы.
Mea culpa

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4258
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Определить, предоставляет ли исполняемый файл COM-интерф

Сообщение iGrok » 01.04.2011 (Пт) 1:40

Правда, что ли? И что же это за зверь такой, эта "сигнатура\шапка ActiveX-либы", и каким именно образом ты собираешься её "идентифицировать"?
label:
cli
jmp label


Вернуться в OLE / COM / ActiveX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList