AppDomain.CreateInstanceFromAndUnwrap - Não é possível converter o proxy transparente

Estou escrevendo uma biblioteca .NET para injetar DLLs gerenciadas em processos externos. Minha abordagem atual é:

UsarCreateRemoteThread para forçar o processo de destino para chamarLoadLibrary em uma DLL de inicialização não gerenciada. A partir deste ponto, estamos executando o código no processo de destino.Minha DLL de bootstrap cria uma instância do CLR e chamaExecuteInDefaultAppDomain nele, que executa um método em uma DLL auxiliar gerenciada.Esse método cria um novo AppDomain e chamaAppDomain.CreateInstanceFromAndUnwrap para passar a execução para minha DLL de carga útil, lançando o resultado como umIInjectionPayload.A ideia é que minha DLL de payload expõe uma classe que implementaIInjectionPayload, então a DLL auxiliar pode simplesmente chamarpayload.Run().

Eu estou fazendo desse jeito para que o código de carga útil possa ser completamente descarregado simplesmente chamandoAppDomain.Unload (depois de sinalizar para limpar).

Essa abordagem funciona - a classe na minha DLL de carga útil está sendo instanciada no processo de destino, portanto, o códigoposso ser executado - mas eu não posso lançar o objeto retornado porCreateInstanceFromAndUnwrap para umIInjectionPayload; ele lança a seguinte exceção:

Não é possível converter proxy transparente para digitar 'blah.Blah.IInjectionPayload'.

Eu tentei usarCreateInstanceAndUnwrapeActivator.CreateInstanceFrom Seguido porObject.Unwrap, mas ambos os métodos também fazem com que a mesma exceção seja lançada.

A assinatura da minha classe de carga é:

public class Program : MarshalByRefObject, IInjectionPayload

Estou perplexo porque a DLL de carga útil está sendo carregada e a classe está sendo instanciada, como pretendido. Qualquer ajuda seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion