Мне нужно подключить определенную функцию .NET в целевом процессе.Итак, у меня есть C # Dll, готовая для инъекции, но мне нужен способ сделать хук, как только dll загружена.
ПРОБЛЕМА: в C # нет таких вещей, как dllmain.
РЕШЕНИЕ: Вот что я попробовал> C # эквивалент DllMain в C (WinAPI)
У меня нет 50 репутаций, поэтому я не могу комментировать ответ @mheyman.Но я сделал все, что он предложил, скомпилировал каждую вещь в один Dll, который я затем ввел в свой целевой процесс.Но он блокируется на уровне:
LaunchDll(dll, len, "MyNamespace.MyClass", "DllMain"); in dllmain.cpp
Я не могу идти дальше, я получаю ошибку
Это приложение запросило среду выполнения, чтобы завершить его необычным способом,Пожалуйста, обратитесь в службу поддержки приложения для получения дополнительной информации
Функция LaunchDll никогда не выполняется, и если я изменяю ее так, чтобы она немедленно возвращалась, я все равно получаю такое же поведение, которое заставляет меня думать, что проблемапри звонке в LaunchDll.
Вот вывод, который я получаю из отладчика Just in time Visual Studio:
...
'target.exe' (Win32): загружен'C: \ Windows \ System32 \ Api-мс-Win-Core-processthreads-l1-1-1.dll'.Символы загружены.'target.exe' (Win32): загружен 'C: \ Windows \ System32 \ api-ms-win-core-file-l1-2-0.dll'.Символы загружены.'target.exe' (Win32): загружен 'C: \ Windows \ System32 \ api-ms-win-core-timezone-l1-1-0.dll'.Символы загружены.'target.exe' (Win32): загружен 'C: \ Windows \ System32 \ api-ms-win-core-file-l2-1-0.dll'.Символы загружены.'target.exe' (Win32): загружен 'C: \ Windows \ System32 \ api-ms-win-core-synch-l1-2-0.dll'.Символы загружены.Нить 0xc27c вышла с кодом 3 (0x3).Нить 0x828c вышла с кодом 3 (0x3).Нить 0xb47c вышла с кодом 3 (0x3).Нить 0xbce0 вышла с кодом 3 (0x3).Нить 0xb974 вышла с кодом 3 (0x3).Нить 0x68d4 вышла с кодом 3 (0x3).Нить 0xc4e8 вышла с кодом 3 (0x3).Нить 0xc748 вышла с кодом 3 (0x3).Нить 0xc198 вышла с кодом 3 (0x3).Нить 0xa708 вышла с кодом 3 (0x3).Нить 0x8870 вышла с кодом 3 (0x3).Нить 0xc02c вышла с кодом 3 (0x3).Поток 0xc3fc вышел с кодом 3 (0x3).Нить 0x995c вышла с кодом 3 (0x3).Нить 0xb790 вышла с кодом 3 (0x3).Поток 0xb9b8 завершился с кодом 3 (0x3).Программа '[47324] target.exe' вышла с кодом 3 (0x3).
Вот код .NET Dll:
namespace MyNameSpace {
public class MyClass {
public static void DllMain() {
string text1 = "random Text from .NET Dll \n ";
System.IO.File.WriteAllText(@"D:\\TestFromCSharp.txt", text1);
}
}
}