AppDomain.CreateInstanceFromAndUnwrap - Невозможно привести прозрачный прокси

Я пишу библиотеку .NET для внедрения управляемых DLL во внешние процессы. Мой текущий подход:

использованиеCreateRemoteThread заставить целевой процесс вызватьLoadLibrary на неуправляемой загрузочной DLL. С этого момента мыповторное выполнение кода в целевом процессе.Моя библиотека начальной загрузки затем создает экземпляр CLR и вызываетExecuteInDefaultAppDomain на нем, который выполняет метод в управляемой вспомогательной DLL.Этот метод создает новый домен приложений и вызываетAppDomain.CreateInstanceFromAndUnwrap передать выполнение в мою DLL полезной нагрузки, приведя результат как.IInjectionPayloadИдея состоит в том, что моя полезная DLL предоставляет класс, который реализуетIInjectionPayload, поэтому вспомогательная DLL может просто вызвать .I 'payload.Run()

Я делаю это таким образом, чтобы код полезной нагрузки мог быть полностью выгружен, просто вызываяAppDomain.Unload (после того, как подал сигнал на очистку).

Этот подход работает - класс в моей DLL полезной нагрузки создается в целевом процессе, поэтому кодМожно быть казненным - но я могубросил объект, возвращенныйCreateInstanceFromAndUnwrap дляIInjectionPayload; он выбрасывает следующее исключение:

Невозможно привести прозрачный прокси к типу 'blah.Blah.IInjectionPayload'.I»

мы пытались использоватьCreateInstanceAndUnwrap, а такжеActivator.CreateInstanceFrom с последующимObject.Unwrap, но оба эти метода также вызывают одно и то же исключение.

Подпись моего класса полезной нагрузки: I '

public class Program : MarshalByRefObject, IInjectionPayload

Я озадачен, потому что DLL полезной нагрузки определенно загружается и создается экземпляр класса, как и предполагалось. Любая помощь приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос