Не удается сделать Inject в процесс, исключение при попытке сделать инъекцию

130
20 ноября 2020, 19:10

Уже не знаю что делать, но при попытке сделать инъекцию библиотеки в процесс, получаю исключение:

Тип "System.Runtime.Remoting.ServerIdentity" в сборке "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" не помечен как сериализуемый.

Т.к. этот тип не доступен извне, я не могу с ним ничего сделать, и не понимаю как этого избежать?

Передаваемый объект через IPC канал, не содержит типов которые не могут быть сериализованы.

Код которым я пытаюсь сделать инъекцию:

static void Main(string[] args)
{
    RendererInterface rendererInterface = new RendererInterface();
    string channelName = null;
    IpcServerChannel channel = null;
    try
    {
        channel = RemoteHooking.IpcCreateServer(ref channelName, WellKnownObjectMode.Singleton,
            rendererInterface);
        int pid = Process.GetProcessesByName("antialias").First().Id;
        RemoteHooking.Inject(pid, "libicey_overlay_renderer.dll", "libicey_overlay_renderer.dll",
            rendererInterface);
        while (Console.ReadKey(true).Key != ConsoleKey.Escape)
        {
        }
    }
    catch(Exception e)
    {
        // ignored
        Console.WriteLine(e.Message);
    }
    finally
    {
        rendererInterface.Destroy();
        System.Runtime.Remoting.Channels.ChannelServices.UnregisterChannel(channel);
    }
}

RendererInterface:

[Serializable]
public delegate void RendererInterfaceMessage(string message);
[Serializable]
public delegate void RendererInterfaceInternalMessage(int messageId);
[Serializable]
public class RendererInterface : MarshalByRefObject
{
    public event RendererInterfaceMessage RendererMessage;
    internal event RendererInterfaceInternalMessage InternalMessage;
    protected virtual void OnRendererMessage(string message) => RendererMessage?.Invoke(message);
    public void Destroy()
    {
        OnInternalMessage(-1);
    }
    public void SendMessage(string message)
    {
        RendererMessage?.Invoke(message);
    }
    public DateTime Ping() => DateTime.Now;
    protected virtual void OnInternalMessage(int messageId)
    {
        InternalMessage?.Invoke(messageId);
    }
}
READ ALSO
Форма блокируется потоком

Форма блокируется потоком

C# WinFormThread запускается и работает, но блокирует все элементы формы

95
имя не существует в контексте

имя не существует в контексте

Использую selenium с c#Необходимо сделать ожидание

96
Ошибка преобразования HSV в RGB и наоборот

Ошибка преобразования HSV в RGB и наоборот

Народ у меня есть slider в проекте который двигает другого но вроде не должен

118
Ограничить вводимые данные. SQL

Ограничить вводимые данные. SQL

Пытался уже решить этот вопрос, но никак не получаеться решить проблему

117