· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Кто знает COM?

Посл.отвђт Сообщенiе


Дата: Фев 3, 2004 23:41:27

У меня вопрос. В COM я ни бум-бум, придется разбираться :((( Меня интересуют только хаки. Вот, положим, открыл я файл в OLE-COM Viewer. Вижу следующее:
interface ISetupCABFile : IDispatch {
        [id(00000000), propget, helpstring("Collection of top level components in the media")]
        HRESULT Components([out, retval] ISetupComponents** pVal);
        [id(0x00000001), propget, helpstring("Main object in the CAB")]
        HRESULT MainObject([out, retval] ISetupDriver** pVal);
        [id(0x00000002), propget]
        HRESULT SetupTypes([out, retval] ISetupTypes** pVal);
        [id(0x00000003), propput]
        HRESULT IncludedPatforms(
                        [in] long Mask, 
                        [in] VARIANT_BOOL rhs);
        [id(0x00000004), propput]
        HRESULT IncludedLanguages(
                        [in] long Lang, 
                        [in] VARIANT_BOOL rhs);
        [id(0x00000005), propget]
        HRESULT MaintenanceMode([out, retval] VARIANT_BOOL* pbVal);
        [id(0x00000006), propget]
        HRESULT guid(
                        [in] long Index, 
                        [out] BSTR* pVal);
        [id(0x00000007), propget]
        HRESULT File([out, retval] BSTR* pVal);
        [id(0x00000008), propget]
        HRESULT ErrorInfo([out, retval] ISetupTransferErrorInfo** ppVal);
        [id(0x00000009), propput]
        HRESULT Password([in] BSTR rhs);
        [id(0x00000014)]
        HRESULT InitializeLog([in] ISetupFeatureLog* pLog);
        [id(0x00000015)]
        HRESULT CreateRegistrySet(
                        [in] BSTR Name, 
                        [in] ISetupFeatureLog* pLog);
        [id(0x00000016)]
        HRESULT CreateShellObjects([in] ISetupFeatureLog* pLog);
    };


Так вот, вопросы:
1) Как утилита выдрала сие из exe-файла?
2) Как соотнести то, что я вижу с реальными строками кода?
3) На этот вопрос я и сам найду ответ, но вдруг кто-то может дать совет - есть ли хорошие технические статьи по хаку COM. Как сия ерунда устроена на низком уровне?

Все, спасибо. Жду ответов.


Дата: Фев 3, 2004 23:43:18

Да, под ХОРОШЕЙ статьей по хаку COM я понимаю что-то подобное
http://www.microsoft.com/msj/0399/comtype/comtype.aspx, а
не жевание соплей в течение часа.


Дата: Фев 3, 2004 23:56:22

Уже понял, откуда извлекаются TypeLib - из ресурсов, где они торчат как бинарники. Остается открытым вопрос №2 и №3.


Дата: Фев 4, 2004 00:04:30 · Поправил: Безпощадный даос


Дата: Фев 4, 2004 01:18:05

Как соотнести эти методы с адресами в файле?


Дата: Фев 4, 2004 01:35:33

Нужно найти виртуальную таблицу. Если разассемблить файл ее легко распознать. В зависимости от интерфейса разные таблицы. Ф-ция Components должна быть восьмая в таблице.


Дата: Фев 4, 2004 01:39:07

По подобию vftbl для C++?
А есть методики для поиска?


Дата: Фев 6, 2004 05:36:50
Правка

Рискну вставить пару слов…

По подобию vftbl для C++?
Да, СОМ-интерфейсы создаются по модели объектов C++ и содержат свою таблицу виртуальных методов, которая так и называется.

А есть методики для поиска?
Есть специальные функции для просмотра таблицы методов и интерфейсов (может, неправильно выразился), подробнее не могу сказать, т.к. читал о СОМ пару недель назад в одной книге. Довольно хорошая книга, по ней можно даже писать без проблем на ?ASM'е интерфейсы СОМ.

Если нужно, могу выслать… ?


Дата: Фев 7, 2004 19:11:34

Нужно. Шли :)


Дата: Фев 7, 2004 20:49:06

IceStudent

Забей. Уже все понял и почти во всем разобрался. Спасибо.


Дата: Фев 7, 2004 21:42:07

IceStudent
Ну вот :( Начинаю я искать: "Довольно хорошая книга.." А мне сразу вопрос: "а кто же автор" ;-)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.079