Hallo, ich versuche momentan mithilfe einer injected dll Codesegmente im Speicher des Programms das die dll lädt zu manipulieren.
Allerdings habe ich gewisse Schierigkeiten dies zu realisieren, speziell das modifizieren an sich.
Die dll habe ich bereits injected, die Basisaddressen der Codesegmente die ich manipulieren will habe ich herausgesucht mithilfe von ollydbg und einem hex editor und ich weiß schon ziemlich genau was ich wie ändern muss.
Nur wie soll ich nun innerhalb der dll auf den Speicherbereich den ich modifizieren will zugreifen? Ich habe bereits versucht nach einer Antwort zu suchen, nur bin ich aus den gefundenen Themen nicht wirklich schlau geworden.
In einigen Antworten wird von der Funktion WriteProcessMemory() geredet und nachdem ich mir die Dokumentation angeschaut habe, scheint das auch die gewünschte Funktion zu sein.
Allerdings habe ich auch gelesen, dass diese Funktion gar nicht notwendig ist wenn man sich bereits im Speicher des Prozesses befindet (also nicht auf einen externen Prozess zugreifen muss).
Das ergibt ja auch Sinn (auch wenn ich immer gedacht habe, dass die Speicherbereiche von dll und exe auch irgendwie voneinander getrennt sind), nur bin ich beim besten Willen nicht in der Lage auf die gewünschte Addresse zuzugreifen.
Angenommen ich will den Speicher bei der Addresse 0x0418FC01 lesen/modifizieren, wie kann ich das mit pointern realisieren?
Außerdem bin ich mir nach wie vor nicht ganz sicher, wie ich mit dem Offset umgehen soll. In all den Tutorials und Threads die ich diesbezüglich gefunden habe war nur die Rede davon, dass man zb mit CheatEngine sich den Offset anzeigen lassen kann und dann damit auf die Addresse im Speicher kommt.
Soweit ich weiß ändert sich der Offset aber von Zeit zu Zeit und bleibt nicht konstant für jeden Prozess oder?
Wenn dem so ist, wie kann ich mir dann innerhalb der dll den Offset holen/berechnen (damit ich nicht jedes Mal mit CheatEngine nachschauen muss oder gar den kompletten Speicher des Prozesses durchsuchen muss).
Ich hoffe ihr könnt mir helfen ;)
Allerdings habe ich gewisse Schierigkeiten dies zu realisieren, speziell das modifizieren an sich.
Die dll habe ich bereits injected, die Basisaddressen der Codesegmente die ich manipulieren will habe ich herausgesucht mithilfe von ollydbg und einem hex editor und ich weiß schon ziemlich genau was ich wie ändern muss.
Nur wie soll ich nun innerhalb der dll auf den Speicherbereich den ich modifizieren will zugreifen? Ich habe bereits versucht nach einer Antwort zu suchen, nur bin ich aus den gefundenen Themen nicht wirklich schlau geworden.
In einigen Antworten wird von der Funktion WriteProcessMemory() geredet und nachdem ich mir die Dokumentation angeschaut habe, scheint das auch die gewünschte Funktion zu sein.
Allerdings habe ich auch gelesen, dass diese Funktion gar nicht notwendig ist wenn man sich bereits im Speicher des Prozesses befindet (also nicht auf einen externen Prozess zugreifen muss).
Das ergibt ja auch Sinn (auch wenn ich immer gedacht habe, dass die Speicherbereiche von dll und exe auch irgendwie voneinander getrennt sind), nur bin ich beim besten Willen nicht in der Lage auf die gewünschte Addresse zuzugreifen.
Angenommen ich will den Speicher bei der Addresse 0x0418FC01 lesen/modifizieren, wie kann ich das mit pointern realisieren?
Außerdem bin ich mir nach wie vor nicht ganz sicher, wie ich mit dem Offset umgehen soll. In all den Tutorials und Threads die ich diesbezüglich gefunden habe war nur die Rede davon, dass man zb mit CheatEngine sich den Offset anzeigen lassen kann und dann damit auf die Addresse im Speicher kommt.
Soweit ich weiß ändert sich der Offset aber von Zeit zu Zeit und bleibt nicht konstant für jeden Prozess oder?
Wenn dem so ist, wie kann ich mir dann innerhalb der dll den Offset holen/berechnen (damit ich nicht jedes Mal mit CheatEngine nachschauen muss oder gar den kompletten Speicher des Prozesses durchsuchen muss).
Ich hoffe ihr könnt mir helfen ;)