Мне было интересно, возможно ли внедрить поток в удаленный домен приложения, запущенный в отдельном процессе.
Я предполагаю, что я мог бы сделать это, используя интерфейсы отладки (ICorDebug), но мне было интересно, есть ли другой способ?
Недавно было объявлено о новом оборудовании, которое Mono предоставляет именно для этого. Смотрите этот пост на сборка впрыска .
Это может быть сделано, есть пример кода в snoop . Он устанавливает ловушку, и с помощью управляемого c ++ указывает приложению загрузить домен. Действительно впечатляет ...
Есть другой способ, используя SetThreadContext и изменяя EIP целевого процесса. Однако я не знаю, как бы вы сделали это в C #.
SetThreadContext
У Майка Сталла есть интересный пример о том, как использовать CreateRemoteThread для внедрения удаленных потоков в управляемые приложения.
Этот ответ все еще неполон, потому что я хотел бы запустить новый код в удаленном домене приложения. Я думаю, я мог бы попытаться создать 1 новый поток, который загружает библиотеку для меня, и другой, который будет вызывать место в моей новой библиотеке, чтобы сделать работу.