2016-03-10 10 views
5

È possibile utilizzare C# per chiamare una funzione all'interno di un altro processo in esecuzione che è scritto in C/C++?Come utilizzare C# per chiamare una funzione all'interno di un processo nativo in esecuzione separata?

So che si può fare ciò usando C++ iniettando una DLL che avvia un thread remoto, ascolta i tasti associati e fa una chiamata alla funzione desiderata la cui firma e indirizzo sono stati definiti.

Il C++ a C++ tutorial è qui: http://www.codeproject.com/Articles/29527/Reverse-Engineering-and-Function-Calling-by-Addres#Applying

Se non ricordo male, Ho anche letto in passato che non si può iniettare una DLL gestita (C#) in un processo non gestito (C++). Ma forse esiste un altro modo ...

Il motivo per cui mi piacerebbe farlo è quello di decodificare un gioco per PC e scrivere piccoli hack in C#, una lingua che conosco.

+0

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

+0

C'è un altro tutorial qui: http: //www.codeproject.com/Articles/607352/Injecting- Net-Assemblies-Into-Unmanaged-Processes – xanatos

+0

@GediminasMasaitis No, il codice nell'esempio fa tutto. Una piccola libreria in C/C++ viene iniettata nel processo di destinazione, che carica l'host CLR nel processo di destinazione e carica quindi la DLL desiderata. – xanatos

risposta

2

Dai un'occhiata alla libreria MemorySharp, fa esattamente quello che vuoi.

Problemi correlati