Получить доступ к AppDomain в другом приложении?

Я пытаюсь расширить бесплатную проприетарную часть программного обеспечения .Net 2.0, и это меня огорчает. Мне удалось внедрить dll Win32 и заставить ее успешно загрузить dll .Net в основной домен приложения, но это привело к полной блокировке пользовательской системы с графическим интерфейсом.

Можно ли получить ссылку на удаленный AppDomain (работающий в другом приложении) и выполнять над ним операции (например, загрузить сборку, создать класс)?

Причина, по которой я спрашиваю, заключается в том, что я уверен, что видел что-то, когда ковырялся с API-интерфейсом хостинга Win32, но я не могу найти это снова...


person Liam Dawson    schedule 30.06.2011    source источник
comment
Вам дали сильную подсказку, когда графический интерфейс заблокировался. Если их код не был написан для успешного расширения, есть вероятность, что любое расширение, скорее всего, не будет успешным.   -  person John Saunders    schedule 30.06.2011
comment
@ John-Saunders Графический интерфейс пользователя блокировался при внедрении сборки, независимо от того, содержала ли она код. Я бы отладил его, но рассматриваемая программа также является x64, что вызвало проблемы с удаленной отладкой.   -  person Liam Dawson    schedule 30.06.2011
comment
да, как я сказал. Бесплатный код явно не предназначен для такого расширения.   -  person John Saunders    schedule 30.06.2011


Ответы (2)


То, что они говорят о безопасности, абсолютно верно, однако есть некоторые инструменты, которые позволяют вам делать то, что вы хотите (модифицировать приложение во время выполнения?)

Посмотри на:

Сесил http://www.mono-project.com/Cecil

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

Crack.NET http://cracknetproject.codeplex.com/

Как только вы найдете интересующий вас объект или тип, вы можете манипулировать им и другими объектами, написав и выполнив сценарий IronPython.

Ваше здоровье

person Carlos Quintanilla    schedule 30.06.2011

Нет, вы не получите ссылку на другой домен приложения. AppDomains изолированы. В противном случае весь код .NET будет полностью незащищенным.

person DiVan    schedule 30.06.2011