Speicheradresse mit neuem Wert füllen

das ist viel ? keine ahnung
.was heist das den alles
bin TOTALER anfänger

kannst du mir das kurz (oder Lang ) erklären was ich wo wie benutzen muss
 
Testweise könntest du auch einfach mal sowas machen:

PHP:
void main()
{
	// Spiel via OpenProcess() starten
	// ...
	
	// Pointer auf die Adresse
	// Du müsstest wissen ob der Wert in einem int, unsigned, short, etc. gespeichert wird
	int *targetAddr = (int*)0x07250340;
	
	// Endlosschleife
	for(;;)
	{
		// Prüfen ob sich der Wert geändert hat
		// Schlimmstenfalls bekommst du hier eine "Access violation", wenn sich die Adresse wieder geändert hat
		if(*targetAddr != 4)
			*targetAddr = 4; // Der neue Wert

		// Gegen CPU-Überlastung
		Sleep(10);
	}
}
 
Zuletzt bearbeitet:
Testweise könntest du auch einfach mal sowas machen:

PHP:
void main()
{
	// Spiel via OpenProcess() starten
	// ...
	
	// Pointer auf die Adresse
	// Du müsstest wissen ob der Wert in einem int, unsigned, short, etc. gespeichert wird
	int *targetAddr = (int*)0x07250340;
	
	// Endlosschleife
	for(;;)
	{
		// Prüfen ob sich der Wert geändert hat
		// Schlimmstenfalls bekommst du hier eine "Access violation", wenn sich die Adresse wieder geändert hat
		if(*targetAddr != 4)
			*targetAddr = 4; // Der neue Wert

		// Gegen CPU-Überlastung
		Sleep(10);
	}
}



danke also da ich das spiel ja schon auf habe brauch ich das mit dem öffnen ja nicht jetzt wollt ich deinen code einfach mal eigenständig laufen lassen .
hab einfach mal das was ich eigentlich brauche genommen und das sleep rausgenommen ums genauer zu sehen .
da bekomm ich nur immer die fehlermeldung

Zeile 7 C:\Users\bellpc\Desktop\Unbenannt6.cpp `main' must return `int'

-ist bestimmt ein DUMME FRAGE aber warum geht das so nicht


Code:
#include <iostream>


void main()
{
    // Spiel via OpenProcess() starten
    // ...
    
    // Pointer auf die Adresse
    // Du müsstest wissen ob der Wert in einem int, unsigned, short, etc. gespeichert wird
    int *targetAddr = (int*)0x067425D8;
    
    // Endlosschleife
    for(;;)
    {
        // Prüfen ob sich der Wert geändert hat
        // Schlimmstenfalls bekommst du hier eine "Access violation", wenn sich die Adresse wieder geändert hat
        if(*targetAddr != 0)
            *targetAddr = 1; // Der neue Wert

        // Gegen CPU-Überlastung
       
    }
}
 
@PainMaker: Ja das wäre auch eine mögliche Lösung. Aber seit wann ist Sleep gegen CPU-Auslastung, im Gegenteil es verursacht noch mehr Rechenarbeit.
@glnklein: Poste gleich mal ein Beispiel Folgendes sollte gehen:
C++:
int main()
{
  HWND hwnd = GetConsoleWindow();
  MSG message;
  while (GetMessage(&message, NULL, 0, 0))
  {
    TranslateMessage(&message);
    DispatchMessage(&message);
  }
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  switch (message)
  {
    case WM_CREATE:
    {
      SetTimer(hwnd, 1, 50, NULL);  // Alle 50 Millisekunden
      break;
    }
    case WM_TIMER:
    {
       if (LOWORD(wParam==1)) // Timer-ID
       {
         // Variable setzen
       }
       break;
    }
    default:
      return DefWindowProc(hwnd, message, wParam, lParam);
  }
}
Ich weiß nicht ob das gehen würde, aber man könnte die ganze Nachrichtenschleife weglassen und einen Timer-Callback (letzer Parameter von SetTimer) setzen.
 
Zuletzt bearbeitet:
Nun die Endlosschleife sollte doch eigentlich mehr Überlastung bringen ohne Sleep, oder? Aber is natürlich richtig, dass das auch weggelassen werden kann.

@glnklein:
Laut der Fehlermeldung würde ich darauf schließen dass du
Code:
int main()
statt
Code:
void main()
verwendest und da fehlt dann natürlich ein
Code:
return 0;
am Ende, da der Compiler einen Rückgabe-Wert "int" erwartet.

Mfg Pain-maker

EDIT:

Könnte aber auch sein, dass dein Compiler nicht mit
Code:
void main()

zurecht kommt. In diesem Fall müsstest dus halt einfach in
Code:
int main()

ändern und noch eine 0 oder so zurückgeben.
 
Zuletzt bearbeitet:
Laut Standard sollte es int sein!
@PainMaker: Habe ein Beispiel mit SetTimer gepostet (weiter oben)
 
erstmal danke für eure HILFE bin schon viel gelernt nur ich weis leider nicht wo ich welchen teil einfügen müsste damit der speicher sich nicht mehr
ändern kann oder halt bei änderung neu geschrieben wird , bin bis jetzt soweit das der speicher halt neu geschrieben werden kann
mein code sieht bis jetzt so aus und fnktioniert

Code:
#include <windows.h>
#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{            
   
cout << " Tool\n\n";   
bool beenden=1;
while(beenden=1) 
{
                 
    cout << "Was willst du tun?\n\n\n 0=Beenden \n 1=Minimale Spielerzahl\n 2=Maximale Spielerzahl  \n";
    int eingabe=0;
    cin>>eingabe;     
    if(eingabe==0)
    {
                  return 0;
    }
    cout << "Suche Modern Warfare 2 \n";
    HWND window = NULL;
    while(window == NULL)
    {
                  Sleep(100);
                  window = FindWindow(NULL, "Modern Warfare 2"); 
    }
    DWORD prozess;
    GetWindowThreadProcessId(window, &prozess);
    HANDLE handle;
    handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozess);
    DWORD puffer = NULL;
   
         switch(eingabe)
    {
    case 1:
           cout << "\n neuer wert minimum Spieler ? ";
           
    int wert;
    cin>>wert;     
      
        WriteProcessMemory(handle,(void*)(0x0645C3F8),&wert,6,&puffer);  // das ändert mit das spiel immer wieder sobalt ich etwas im spiel mache 
    cout << "\n Schreibe ... \n"; 
      
        break;
        
    case 2:
         
       cout << "\nneuer wert maximum Spieler ? ";
    int wert2;
    cin>>wert2;     
         
        WriteProcessMemory(handle,(void*)(0x0645C408),&wert2,6,&puffer); // das ändert mit das spiel immer wieder sobalt ich etwas im spiel mache 
  cout << "\n Schreibe ... \n"; 
        break;

    }     
    CloseHandle(handle);  
      
} 
return 0;   
}



kann einer mir ewentuell direkt an meinem code zeigen was ich da machen muss ?
Ich versteh davon einfach noch zuwenig



PS : Pain-maker
wenn ich deinen vorschläge mit main und return übernehme dann kommt kein fehler mehr aber das program stürzt dan ab
 
Du setzt einfach einen der diversen Vorschläge um:
Über einen Timer
Über eine simple blockierende Schleife
Über einen Thread.
 
Das mit dem Timer ist ein wenig komplizierter, denn dann wird der Ablauf nicht mehr ganz "hintereinander ausgeführt", sondern über die Message-Schleife.
 
Zurück