|
You last visited: Today at 10:16
Advertisement
Read/WriteProcess Memory
Discussion on Read/WriteProcess Memory within the C/C++ forum part of the Coders Den category.
06/28/2013, 18:58
|
#1
|
elite*gold: 0
Join Date: May 2013
Posts: 1,266
Received Thanks: 627
|
Read/WriteProcess Memory
Guten tag, ich möchte bei einem spiel Via Read/writeprocessmemory dei value einer Addresse auf 1 bzw 0 abändern
Ich habe dazu auch die Pointer, jedoch will es nicht funktionieren und ich weiß nicht warum.
ich habe es auch schon mit VirtualprotectEx probiert.
Code:
PHP Code:
void Wallhack(bool enable){ DWORD dw; DWORD addy1; DWORD addy2; DWORD addy3; DWORD a = 0; if(enable){ a = 1; } ReadProcessMemory(GetCurrentProcess(),(void*)0x7E3E20,(void*)addy1,4,&dw); ReadProcessMemory(GetCurrentProcess(),(void*)(addy1+0x8),(void*)addy2,4,&dw); ReadProcessMemory(GetCurrentProcess(),(void*)(addy2+0x680),(void*)addy3,4,&dw); ReadProcessMemory(GetCurrentProcess(),(void*)addy3,(void*)addy3,4,&dw); WriteProcessMemory(GetCurrentProcess(),(void*)addy3,(void*)a,4,&dw); }
Ich wäre sehr über Hilfe erfreut!
Mfg
NTX
|
|
|
06/28/2013, 19:32
|
#2
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Quote:
Originally Posted by NTX?!
jedoch will es nicht funktionieren und ich weiß nicht warum.
|
Das wissen wir auch nicht. Könntest du deinen Fehler bitte *etwas* weiter ausholend beschreiben, als nur "geht nicht"
€:
Probier mal statt (void*)(addy1 + 0x08) einfach (void*)((*(DWORD*)addy1) + 0x08) aus
Padmak
|
|
|
06/28/2013, 19:40
|
#3
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
|
1) Ist es Absicht, dass du GetCurrentProcess() nutzt? Hast du eine Dll oder eine Konsolenanwendung?
2) Dein Code mit dem ReadProcessMemory ist doch recht unübersichtlich, evtl. kannst du das ja mal in Assembly-Notation oder so aufschreiben, dann fallen einem meistens die Fehler eher auf.
3) Deine Adresse ist sicher gültig? Ist sie evtl. ein Offset, das du auf die BaseAddress aufrechnen musst?
4) Okay, VirtualProtectEx spricht für "von außen" modden. Joa, da brauchst du ein Handle zum Prozess. :/
Quote:
Probier mal statt (void*)(addy1 + 0x08) einfach (void*)((*(DWORD*)addy1) + 0x08) aus
|
Da schmiert ihm im schlimmsten Falle das Programm ab, da wir hier mit den vielen Infos auch nicht sagen können, ob er jetzt in der Zielanwendung ist oder nicht. :/
|
|
|
06/28/2013, 19:43
|
#4
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Wo du auch wieder Recht hast. Auf das GetCurrentProcess() hab ich gar nicht geachtet, ich dachte der wird schon wissen was er da tut
Bitte einfach mal sagen ob du eine DLL nutzt oder nicht, falls dem so wäre könntest du auch einfach memcpy nehmen
Padmak
|
|
|
06/28/2013, 19:58
|
#5
|
elite*gold: 0
Join Date: May 2013
Posts: 1,266
Received Thanks: 627
|
Quote:
Originally Posted by snow911
1) Ist es Absicht, dass du GetCurrentProcess() nutzt? Hast du eine Dll oder eine Konsolenanwendung?
2) Dein Code mit dem ReadProcessMemory ist doch recht unübersichtlich, evtl. kannst du das ja mal in Assembly-Notation oder so aufschreiben, dann fallen einem meistens die Fehler eher auf.
3) Deine Adresse ist sicher gültig? Ist sie evtl. ein Offset, das du auf die BaseAddress aufrechnen musst?
4) Okay, VirtualProtectEx spricht für "von außen" modden. Joa, da brauchst du ein Handle zum Prozess. :/
Da schmiert ihm im schlimmsten Falle das Programm ab, da wir hier mit den vielen Infos auch nicht sagen können, ob er jetzt in der Zielanwendung ist oder nicht. :/
|
Zu 1) ja ist ein DLL, ist also absichtlich so.
Zu 2) Assembly-Notation ? Sorry höre ich das erste mal
Zu 3) Ja sie ist Gültig in CheatEngine Klappt alles Wunderbar
Zu 4) Ich weiß, nur war des "mein letzter" versuch
In übrigen versuche ich einen Wallhack auf Shrio2 (metin2 ) umzusetzen. Klappt in Ce auch wunderbar, nur an der Umsetzung in Code scheitert es.
€: Der obige "code"-Ausschnitt ging auch nicht.
Wenn niemand weiter einen Lösungsweg weiß, werde ichs einfach in ASM machen.
|
|
|
06/28/2013, 20:18
|
#6
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Probier es mal so:
Code:
void Wallhack(bool enable)
{
DWORD addy1;
DWORD addy2;
DWORD addy3;
addy1 = *(DWORD*)0x7E3E20;
addy2 = *(DWORD*)addy1 + 0x08;
addy3 = *(DWORD*)addy2 + 0x680;
*(DWORD*)addy3 = (DWORD)enable;
}
Ich hab in Metin noch nie Wallhacks gemacht, ob es so stimmt kann ich also nicht sagen (ist btw Browsergeschrieben & ungetestet)
Padmak
|
|
|
06/28/2013, 20:19
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
im eigenen prozess rpm und wpm, bei euch hakts aber noch, oder?
Code:
void Wallhack(bool enable)
{
*(**(DWORD***)((*(DWORD*)((*(DWORD*)0x7E3E20) + 0x8)) + 0x680)) = enable ? 1 : 0;
}
der fehler ist btw. dass du in rpm nix in einen buffer ausgibst, sondern den INHALT der variablen als void* castest (nein, ich weiß auch net wieso das noch keinem vorher aufgefallen ist....).
|
|
|
06/28/2013, 20:44
|
#8
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Bei uns? Der einzige der es so machen wollte, war er selbst.
Den Code am Anfang hat sich glaub ich keiner so richtig angesehen, weil er offensichtlich falsch ist. Außerdem ist doch dein Code im Prinzip exakt der gleiche wie meiner, oder nicht?
Padmak
|
|
|
06/28/2013, 20:57
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Padmak
Bei uns? Der einzige der es so machen wollte, war er selbst.
|
jö, war vllt nen bissle blöd ausgedrückt, aber ihr habt ihn auch net wirklich direkt korrigiert
Quote:
Den Code am Anfang hat sich glaub ich keiner so richtig angesehen, weil er offensichtlich falsch ist.
|
nö, falsch ist der nicht unbedingt, sollte auch theoretisch funzen wenn ers mitm buffer fixt.
Quote:
Außerdem ist doch dein Code im Prinzip exakt der gleiche wie meiner, oder nicht?
|
nein, du hast einmal dereferenzieren vergessen, oder op hats 1x zuviel gemacht, bin mir da nicht so sicher, ob er weiß, was er da eigtl tut. (außerdem war dein post noch net da, als ich auf antworten geklickt habe, sonst hätte ichs korrigiert).
@Topic:
Ein screenshot von dem CE pointer wäre nett, dann könnten wir dir korrekten code geben, ansonsten einfach mal meinen code ausprobieren, wenn der nicht funzt, dann einmal
Code:
*(*(DWORD**)((*(DWORD*)((*(DWORD*)0x7E3E20) + 0x8)) + 0x680)) = enable ? 1 : 0;
|
|
|
06/28/2013, 21:01
|
#10
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Ich hab eigentlich nur seinen Code "umgeschrieben", in Ermangelung eines CE-Screenshottes bzw. eigener Erfahrungen mit Wallhacks in Metin konnte ich ihn nicht weiter korrigieren.
Außerdem stünde dem TE immer noch Debugging als Unterstützung zur Seite, davon könnte er auch Gebrauch machen, um zu identifizieren bis zu welchem Level was funktioniert etc.
Padmak
|
|
|
06/28/2013, 21:09
|
#11
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by Padmak
Ich hab eigentlich nur seinen Code "umgeschrieben",
|
wenn mein hirn von dem pointermist nicht schon vollkommen verkocht ist (was gut sein kann), hast du die zeile
Code:
ReadProcessMemory(GetCurrentProcess(),(void*)addy3,(void*)addy3,4,&dw);
vergessen.
|
|
|
06/28/2013, 21:13
|
#12
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Ähm.. kann natürlich sein, dass ich mich vertu, aber ist das nicht "*(DWORD*)addy3"?
Kann natürlich absolut sein, dass das falsch ist.. so sonderlich gut kann ich das au nich
Padmak
|
|
|
06/28/2013, 21:23
|
#13
|
elite*gold: 0
Join Date: May 2013
Posts: 1,266
Received Thanks: 627
|
nagut soweit hat bisher nix geklappt :/ ich werde des dann über ASM lösen..
Damals wo ich mit C# gearbeitet habe möchte ich ASM nie, jeze mag ich des Pointer gedönse nicht xd
|
|
|
06/28/2013, 21:27
|
#14
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by NTX?!
nagut soweit hat bisher nix geklappt :/ ich werde des dann über ASM lösen..
Damals wo ich mit C# gearbeitet habe möchte ich ASM nie, jeze mag ich des Pointer gedönse nicht xd
|
poste einfach einmal nen screenshot vom CE pointer, dann können wir dir auch helfen...
|
|
|
06/28/2013, 21:35
|
#15
|
elite*gold: 0
Join Date: May 2013
Posts: 1,266
Received Thanks: 627
|
|
|
|
|
|
Similar Threads
|
[VB]Write Memory bzw Read Memory
06/26/2010 - .NET Languages - 8 Replies
Hi
Ich hab das TuT von *Guidman* benütz um einen hack zu machen.
So aber nun hab ihc ein paar fragen könnte man memory teil kürzer machen und am besten wie kann man das selber machen weil ich will nihct immer C&P machen.
Und zu Read Memory kann man das auch machen das ein Label immer die Bestimmte Ahnzahl angiebt von dem Pointer?.(Wenn das Read Memory ist ?)
Bitte helf mir
Danke
|
Memory read and add value
06/20/2010 - AutoIt - 4 Replies
Im trying to read values with HexCode but i have no ide to do this. i want the porgress bar and the labels to show the curent value of the Adresses
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
|
Memory Read
06/18/2010 - AutoIt - 8 Replies
Hey E*PvP,
ich hab ein Problem...
Ich denke das die memory richtig ist , aber er gibt mir immer nur 0 aus....
Egal ob ich 0, 1, 1000 oder 9million punkte hab ...
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <nomadmemory.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Sol loger", 201, 64, 324, 280)
|
Memory Read
06/18/2010 - AutoIt - 0 Replies
wtf?? pls delete
|
[Question] WriteProcess Memory with Offsets
06/13/2010 - CO2 Programming - 3 Replies
The base address is 0x0045cc20 and the following offset is 0xEC found by cheat engine.
My code without offset
public void Write(int val)
{
byte bytes = new byte;
bytes = (byte)val;
|
All times are GMT +2. The time now is 10:16.
|
|