Mit c# eine Funktion aufzurufen, die von einem anderen Prozess
Ich bin die Schaffung eines Speicher-ändern-Programm für meine eigenen Lernzwecken. Ein Freund von mir wies darauf hin, eine Funktion in einem anderen Programm, das ich auslösen wollen.
Die Funktion ist bei 0x004B459C in das andere Programm. Ich weiß, wie Sie Lesen und schreiben Speicher, aber wie kann ich das auslösen dieser Funktion von meinem Programm. Ich habe nicht die Quelle, um dieses andere Programm.
Meine Frage ist muss ich die einfügen die Funktion wenn ich weiß das dieser hex-code, oder muss ich nur etwas schreiben, um den Speicher zu lösen diese?
- Was haben Sie versucht? Warum würden Sie wollen, um die Kommunikation mit einem anderen Prozess durch das ändern von bestimmten Abschnitten des Speichers in C#?
- Ich Lerne über die Speicher-änderung Prozess, und jetzt bin ich neugierig, wie die Menschen lösen eine Funktion aus der Ferne.
- Ich denke, Sie sollten hinzufügen von tags WinApi und C , verursachen Ihre Frage ist im Zusammenhang mit Verwendung von low-level-OS-Fähigkeiten, dann lieber C#
- Windows wird zum Schutz der Arbeitsspeicher des anderen Prozesses, so dass Sie nicht in der Lage sein, um die Funktion aufzurufen, es sei denn, es ausgesetzt ist, in einigen standard-Weg, wie eine DLL Einstiegspunkt, COM-Objekt, etc...
- Finden Sie diese für das Spiel hackt und nützliche Bibliotheken : google.hu/search?q="Speicher+Hacking+Bibliothek+List"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken Sie ein bisschen über das, was Sie wirklich wollen. Sie wollen, dass die anderen Verfahren zur Ausführung dieser Funktion. Prozesse keinen code ausführen, ist es threads, die das ausführen von code. Wenn Sie möchten, dass die anderen Verfahren zum aufrufen dieser Funktion als Teil der normalen Operationen, die Sie haben, um herauszufinden, Eingänge usw. was machen Sie eines der anderen Verfahren die threads nennen. Im Allgemeinen, jede andere Art und Weise Sie ausgeführt werden, das Risiko der Beschädigung der andere Prozess. Es ist möglich, um zu injizieren, einen thread in einem anderen Prozess und haben es rufen Sie die Funktion die Sie interessiert (siehe CreateRemoteThread). Wenn diese Funktion soll aufgerufen werden, das Nachrichtensystem thread, man könnte injizieren Sie einen Nachricht-hook in der anderen verarbeiten, senden Sie eine spezielle Nachricht, und rufen Sie es von Ihrem Haken. Es gibt ein paar mehr Möglichkeiten (APC), aber diese sind noch komplizierter, etwas zu gewinnen.
dir fehlen einige Grundlagen der Architektur-Grundlagen 🙂 man kann nicht einfach eine Funktion aufzurufen, zu wissen, seine Adresse von einem anderen Prozess! denken, dies bedeutet, dass Sie Ihr Programm bekommt den Speicher eines Programms und ausführen von code! das wird ein Chaos und eine komplett sichere Umgebung. zunächst einige Grundlagen:
1) windows garantiert, dass Sie nur die Erinnerung an den eigenen Prozess, einer der wichtigsten Grundlagen für ein OS (auch Windows) ist, um die Prozesse zu isolieren einschließlich Speicher natürlich.
2) haben denken über Berechtigungen, in der Regel code, der ausgeführt wird, muss unter einem Benutzerkonto ausgeführt wird, ein anderer Prozess könnte bedeuten, einem anderen Prozess Konto.
die Antwort ist einfach, wenn Ihr Programm ist .NET/C# dann prüfen, was die .NET framework stellt Sie für die inter-Prozess-Kommunikation, das ist das, was Sie suchen müssen, jeder Plattform, Java, nativen windows -, .NET bietet eine offizielle Art und Weise, wie Prozesse miteinander kommunizieren, ist es als Interprozess-Kommunikation, überprüfen Sie es in .NET framework