2016-03-10 62 views
5

Czy można użyć C# do wywołania funkcji wewnątrz innego działającego procesu, który jest napisany w języku C/C++?Jak używać C# do wywoływania funkcji w ramach oddzielnego działającego procesu macierzystego?

Wiem, że można to zrobić za pomocą C++ przez wstrzyknięcie biblioteki DLL, która uruchamia zdalny wątek, nasłuchuje powiązanych naciśnięć klawiszy i wykonuje wywołanie żądanej funkcji, której podpis i adres zostały zdefiniowane.

C++ do C++ tutorialu jest tutaj: http://www.codeproject.com/Articles/29527/Reverse-Engineering-and-Function-Calling-by-Addres#Applying

Jeśli dobrze pamiętam, ja również czytać w przeszłości, że nie można wstrzyknąć zarządzanego DLL (C#) do niezarządzanego procesu (C++). Ale może inny sposób istnieje ...

Powodem, dla którego chciałbym to zrobić, jest inżynieria wsteczna gry na PC i napisanie małych haseł w C#, języku, który znam.

+0

Czy to pomaga? http://stackoverflow.com/questions/20023379/injecting-a-managed-dll-into-a-native-process –

+0

Istnieje inny tutorial tutaj: http: //www.codeproject.com/Articles/607352/Injecting- Net-Assemblies-Into-Unmanaged-Processes – xanatos

+0

@GediminasMasaitis Nie, kod w przykładzie robi wszystko. Mała biblioteka w C/C++ jest wstrzykiwana w proces docelowy, który ładuje host CLR w procesie docelowym, a następnie ładuje desidowaną bibliotekę .NET dll. – xanatos

Odpowiedz

2

Spójrz na bibliotekę MemorySharp, robi dokładnie to, co chcesz.