Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM Spy. Как уследить за COM-мом? ищется сабж 
:(
    Опции темы
jonie
Дата 1.9.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



собственно имеем вечную проблему : проблему кривый рук IT службы (ну или кто у кого делает поставки и сетапы).
Как обычно они что-то теряют при поставке (а проект немалый и там очень много COM библиотек (более 500, и все разных версий и т.п.)..
Случается после такого что какая-то библиотека тупо не грузится из-за зависимостей.. искать какая очень сложно : много логов, часть логи не пишет и т.п.

Так вот вопрос : есть ли в мире какой-нибудь COM Spy вроде fuslogvw для .net?

пока я выкручиваюсь из положения примерно так:
беру ольгу (OllyDBG) и использую такой вот скрипт (скрипт не доводился до ума):
Код

/*
 COM Spy
 $version$=1.0.0.0
 $author$=jonie
*/
var CoCreateInstanceEx
var CoCreateInstanceExEnd
var UUIDLocation 
var CallerPtr
var hresult
var GUID

gpa "CoCreateInstanceEx", "ole32.dll" 
mov CoCreateInstanceEx, $RESULT 
find CoCreateInstanceEx, #C2180090#
mov CoCreateInstanceExEnd, $RESULT
cmp CoCreateInstanceExEnd,0
je ErrorWhileSetBPAtEnd

bp CoCreateInstanceEx
log CoCreateInstanceEx
bp CoCreateInstanceExEnd
log CoCreateInstanceExEnd

looplabel: 
    run
    cmp eip, CoCreateInstanceEx
    je CoCreateInstanceExHack
    cmp eip, CoCreateInstanceExEnd
    je CoCreateInstanceExEndHack
    msg "unhandleg exception?! exiting frim script"
    ret

CoCreateInstanceExHack:
    mov CallerPtr, [esp]
    log CallerPtr
    jmp looplabel

CoCreateInstanceExEndHack:
    mov GUID, esp
    add GUID,4
    mov GUID, [GUID]

    log GUID
    dma GUID, 10, "C:\dump.bin" 
    mov hresult, eax
    log hresult
    cmp hresult,0
    jne failed
    jmp looplabel
failed:
    msg "CoCreateInstanceEx FAILED!"
    jmp looplabel

ErrorWhileSetBPAtEnd:
    msg "Cant find CoCreateInstanceEx END!"
ret

дампит в C:\dump.bin GUID-ы получаемого...


анализ примерно так:
Код

#pragma pack(push)
#pragma pack(1)
typedef struct{
    DWORD data1;
    WORD data2,data3,data4;
    BYTE data5[6];
}mguid;
#pragma pack(pop)
int _tmain(int argc, _TCHAR* argv[])
{
    if(argc>1)
    {
        mguid g;
        char c;
        ifstream inf;
        inf.open(argv[1], ios::binary);
        

        if(!inf)
        {
            cerr<<"Cant find file ["<<argv[0]<<"]";
            return -1;
        }
        
        while (inf.read(reinterpret_cast<char*>(&g), sizeof(mguid)))
        {
            cout<<"\n";
            cout<<hex<<setw(8)<<setfill('0')<<g.data1<<"-"
                <<hex<<setw(4)<<setfill('0')<<g.data2<<"-"
                <<hex<<setw(4)<<setfill('0')<<g.data3<<"-"
                <<hex<<setw(2)<<setfill('0')<<(int)LOBYTE(g.data4)
                <<hex<<setw(2)<<setfill('0')<<(int)HIBYTE(g.data4)<<"-";
            //cout.width(2);
            for (int i=0;i<6;++i)
            {
                cout<<hex<<setw(2)<<setfill('0')<<(int)g.data5[i];
            }
            LPOLESTR str;
            ProgIDFromCLSID(*(const IID*)&g, &str);
            wcout<<L"\t"<<str;
        }
        inf.close();
    }
    return 0;
}


чувсвую что велосипедю... 
help


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0381 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.