Методы COM+ (как заглянуть внутрь?)

Мне нужно обновить одно из наших старых приложений для интрасети, написанное на классическом ASP и использующее внутреннюю службу COM+. Я нигде не могу найти исходный код этого объекта, и он не был задокументирован разработчиком.

Я могу просматривать методы, доступные в Сервисе, через Start -> Administrative Tools -> Component Services, но не могу понять, как заглянуть внутрь методов, чтобы увидеть, что они делают.

Можно ли каким-либо образом декомпилировать эти службы COM+ или иным образом посмотреть, что делают их методы, или я обречен на чистое наблюдение за старым приложением и изо всех сил стараюсь имитировать поведение и данные?

Примечание. Я экспортировал службу со старого сервера, установил ее в своем окне разработки, добавил ссылку на проект VS2010 и попытался распознать эти методы с помощью обозревателя объектов. Ничего...


person Chiramisu    schedule 20.02.2013    source источник


Ответы (1)


Службы COM включают описания типов методов, существующих в классах COM, и их параметров, чтобы контроллеры автоматизации могли выяснить, как передавать параметры в методы COM.

Однако помимо этого нет ничего, что указывало бы на то, что классы COM делают внутри, кроме самого собственного машинного кода x86. Вы можете попробовать использовать дизассемблер x86 для DLL, но если вы уже знакомы с инструкциями машинного кода x86, это не сильно поможет.

Компиляция исходного кода в собственный машинный код выбрасывает огромное количество информации. Имена переменных, имена внутренних функций — ничего из этого не требуется ЦП для выполнения инструкций и выполнения операций, указанных в исходном исходном коде. Для дизассемблеров практически невозможно восстановить эти имена, которые могли бы быть полезными ключами к пониманию того, для чего предназначен код. Дизассемблер иногда может помочь разобраться в основной логике, но от человека потребуется много тщательного анализа и усилий, чтобы хотя бы поцарапать поверхность. Это как пытаться понять лес, глядя на отдельные травинки.

person dthorpe    schedule 20.02.2013
comment
Спасибо, сэр, за ваш ответ. Кажется, что эти методы в основном просто извлекают данные из базы данных. Я определил строку подключения из файла global.asa. Есть ли способ, по крайней мере, определить команду выбора SQL путем декомпиляции? Если да, то где я могу получить DLL? Все, что мне удалось экспортировать, это файл *.CAB, содержащий установщик MSI. - person Chiramisu; 20.02.2013
comment
Вам нужно будет установить компонент COM, чтобы ковыряться в его DLL. Дизассемблирование библиотеки DLL может показать фрагменты строк, используемые библиотекой DLL для формирования SQL-запроса. Если вам повезет, SQL-запрос, который вы ищете, находится в одной параметризованной строковой константе. Если вам не так повезло, DLL строит SQL-запрос, используя множество небольших операций объединения строк, и в этом случае в дизассемблированном коде будет очень мало информации. Установка DLL также должна позволить вам вызывать методы DLL и выполнять ассемблерный код в отладчике. - person dthorpe; 20.02.2013