C # DLL Injection - вызов метода запуска приложения - PullRequest
0 голосов
/ 07 марта 2019

Допустим, у меня есть исполняемый файл 'foobar.exe', написанный на C # и теперь скомпилированный, работающий на коробке Windows.Одной из функций в приложении является следующее (пример):

public static async Task LoadBox(string msg)
{
    System.Windows.Forms.MessageBox.Show(msg);
}

Я хотел бы написать DLL на C #, которая вызывает этот метод в приложении.DLL, скажем, «injected.dll», будет внедрена в работающий процесс «foobar.exe» с использованием инжектора, на который здесь ссылаются: http://www.codingvision.net/miscellaneous/c-inject-a-dll-into-a-process-w-createremotethread

Возможно ли из недавно внедренной DLL вызвать публичную функциюв оригинальном exe?Если так, то любой пример кода в C # был бы оценен.

1 Ответ

0 голосов
/ 07 марта 2019

Мой подход заключается в использовании понятий Отражение . Мы могли бы заставить EXE загружать сборку посредством отражения, обнаруживать Type и вызывать метод для этого Type, а затем передавать экземпляр класса в вашем EXE-файле этому методу, который, в свою очередь, выполняет обратный вызов. Круглый путь - но это сработало бы.

Вы можете использовать метод System.Reflection.Assembly.LoadFrom () для загрузки сборки, скомпилированной для .NET. Это довольно старый метод, ничего нового в этом нет. Зависимость содержит и предназначенные приложения чтобы загрузить плагины пост-развертывание написано с использованием этого метода.

Шаг 1

Загрузить сборку плагина в текущий домен приложения, используя System.Reflection.LoadFrom

Шаг 2

Найдите Type в этой сборке плагина с помощью Assembly.GetTypes ()

Шаг 3

Передайте экземпляр класса, определенного в вашем EXE, в плагин и попросите плагин перезвонить. Это то, что фактически делает обратный вызов события.

Ссылка

https://docs.microsoft.com/en-us/dotnet/api/system.activator.createinstance?view=netframework-4.7.2#System_Activator_CreateInstance_System_AppDomain_System_String_System_String_System_Boolean_System_Reflection_BindingFlags_System_Reflection_Binder_System_Object___System_Globalization_CultureInfo_System_Object___

...