<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Readprocessmemory]]></title><description><![CDATA[<p>ich will von einem prozess den speicher auslesen mit readprocessmemory aber leider gibt getlasterror immer 998 aus.<br />
Unzulässiger Zugriff auf einen Speicherbereich.<br />
aber woran kann das liegen?? an den rechten oder übergebe ich die falsche addresse?? und wie kann ich die addressen finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ich habs schon mit einem debugger versucht aber ich bekomme halt immer den fehler da raus!!</p>
<p>Thx für eure Hilfe schon im V orraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/101287/readprocessmemory</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 02:41:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/101287.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Feb 2005 22:57:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Readprocessmemory on Mon, 14 Feb 2005 22:57:30 GMT]]></title><description><![CDATA[<p>ich will von einem prozess den speicher auslesen mit readprocessmemory aber leider gibt getlasterror immer 998 aus.<br />
Unzulässiger Zugriff auf einen Speicherbereich.<br />
aber woran kann das liegen?? an den rechten oder übergebe ich die falsche addresse?? und wie kann ich die addressen finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> ich habs schon mit einem debugger versucht aber ich bekomme halt immer den fehler da raus!!</p>
<p>Thx für eure Hilfe schon im V orraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723530</guid><dc:creator><![CDATA[Mr.Lover]]></dc:creator><pubDate>Mon, 14 Feb 2005 22:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Tue, 15 Feb 2005 20:29:58 GMT]]></title><description><![CDATA[<p>Aus was für einem Prozess möchtest du denn lesen? Woher hast du die Adressen an denen du lesen willst? Wenn du deinen Code posten würdest, wäre das schon recht hilfreich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724351</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Tue, 15 Feb 2005 20:29:58 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Wed, 16 Feb 2005 06:47:05 GMT]]></title><description><![CDATA[<p>Das Prozesshandle muss mit Lesezugriffsrechten auf den Prozessspeicher geoeffnet werden, oder z.B. mit ALL_ACCESS.</p>
<p>Falls Windows das verbietet, kannst Du nix machen, ist dann halt eine Sicherheitsmassnahme.</p>
<p>Anderer Trick ist, dass Du z.B. eine DLL schreibst, die global mit jedem Prozess geladen wird, und die einen Thread startet, der prueft, ob ein externes Signal fuer einen Speicherdump kommt, und wenn, den Prozessspeicher in eine Datei schreibt.</p>
<p>(EDIT: letzteres geht, indem man einen Windows-Hook installiert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/724547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724547</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Wed, 16 Feb 2005 06:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Wed, 16 Feb 2005 16:05:43 GMT]]></title><description><![CDATA[<p>was für ein Hook brauch ich da?</p>
<p>hier mal der code!!</p>
<pre><code class="language-cpp">HWND Spiel;
	HANDLE SpielProcess;
    unsigned GoldAddress=0x0DD812B8;

	DWORD   SpielPID;
	char DEBUG[200];
	FILE *DebugFile;  

	DebugFile=fopen(&quot;DEBUG.txt&quot;,&quot;w&quot;);

	Spiel=FindWindow(NULL,&quot;Spiel&quot;);
	if(!Spiel)
    {
		MessageBox(NULL,&quot;Fenster ist geschlossen&quot;,&quot;FEHLER&quot;,NULL);
		return 0;
	}
	GetWindowThreadProcessId(Spiel,&amp;SpielPID);
     wsprintf(DEBUG,&quot;PID=%d&quot;,SpielPID);
	MessageBox(NULL,DEBUG,&quot;INFO&quot;,NULL);

	SpielProcess=OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ,FALSE,SpielPID);
	if(SpielProcess==NULL)
    {
	   MessageBox(NULL,&quot;konnte kein ProzessHandle öffnen&quot;,&quot;FEHLER&quot;,NULL);	
	   return 0;
	}	
	DWORD BytesRead=0;
	LPVOID lpBuffer=0;

	for(;;)
	{ 
		if(GetAsyncKeyState(0x41) &lt; 0)break;
        if(ReadProcessMemory(SpielProcess,(LPCVOID)GoldAddress,lpBuffer,16,&amp;BytesRead)==NULL)
		{
            MessageBox(NULL,&quot;ReadProcessMemory failed&quot;,&quot;FEHLER&quot;,NULL);
			if(GetLastError()==998)
			{
		    	MessageBox(NULL,&quot;Falsche Addresse&quot;,&quot;FEHLER&quot;,NULL);
			}
			break;
		}
		fprintf(DebugFile,&quot;lpBuffer=%s BytesRead=%d  GetLastError=%d\n&quot;,lpBuffer,BytesRead,GetLastError());
		Sleep(500);

    }
	DWORD Exit;
    GetExitCodeProcess(SpielProcess,&amp;Exit);
    CloseHandle(SpielProcess);
    ExitProcess(Exit);
	return TRUE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/724952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/724952</guid><dc:creator><![CDATA[Mr.Lover]]></dc:creator><pubDate>Wed, 16 Feb 2005 16:05:43 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Thu, 17 Feb 2005 16:54:07 GMT]]></title><description><![CDATA[<p>Ich nehme mal an, dass du die Adresse im Spiel mit einem entsprechenden Tool herausgefunden hast, diese Adressen sind zwar dann abhängig vom Betriebssystem verschieden aber ansonsten immer gleich (frag mich nicht, warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )<br />
Ich gehe also mal davon aus, dass die WinAPI mit dem Fehlercode nicht den Zugriff auf den Speicher deines Spiels meint sondern einfach nicht in den Buffer schreiben kann, da er ein NULL-Pointer ist?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/725830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/725830</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Thu, 17 Feb 2005 16:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Fri, 18 Feb 2005 06:36:54 GMT]]></title><description><![CDATA[<p>Mr.Lover schrieb:</p>
<blockquote>
<p>was für ein Hook brauch ich da?</p>
</blockquote>
<p>Nimm irgendeinen, z.B. fuer Tastaturevents, wenn Du eh auf einen Tastendruck warten willst.</p>
<p>Bei OpenProcess() kannst Du uebrigens auch ALL_ACCESS angeben, dann kannst Du sicher(er) sein, dass Du auch dessen Speicher auslesen kannst.</p>
<p>Mit Hooks hast Du den Vorteil, das Dein Code im Kontext des jeweiligen Prozesses ausgefuehrt wird. Lies Dir mal das Hooks-Kapitel in der Platform SDK Dokumentation durch.</p>
<p>Du musst dafuer Deinen Code in eine DLL packen. ReadProcessMemory() kannst Du Dir dann schenken, da Du den Speicher direkt auslesen kannst.</p>
<p>Du kannst auch die ToolHelp DLL verwenden, um mehr Informationen ueber einen Prozess herauszubekommen. Du kannst damit auch einen Mini-Debugger schreiben, der das zu testende Programm startet und dann dessen Speicher ausliest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/726143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/726143</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Fri, 18 Feb 2005 06:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Fri, 18 Feb 2005 17:34:46 GMT]]></title><description><![CDATA[<p>Wie sieht denn der aktuelle Stand aus? Lag es an dem fehlerhaften Buffer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/726663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/726663</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Fri, 18 Feb 2005 17:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Fri, 18 Feb 2005 20:24:18 GMT]]></title><description><![CDATA[<p>ne lag nicht an dem buffer aber trotzdem danke</p>
<p>ok ich versuch das gleich mal mit den hooks thx @ Power Off</p>
]]></description><link>https://www.c-plusplus.net/forum/post/726782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/726782</guid><dc:creator><![CDATA[Mr.Lover]]></dc:creator><pubDate>Fri, 18 Feb 2005 20:24:18 GMT</pubDate></item><item><title><![CDATA[Reply to Readprocessmemory on Fri, 18 Feb 2005 21:33:58 GMT]]></title><description><![CDATA[<p>Mr.Lover schrieb:</p>
<blockquote>
<p>ne lag nicht an dem buffer aber trotzdem danke</p>
</blockquote>
<p>Du hast es aber schon versucht, Speicher für den Buffer zu allokieren?</p>
<pre><code class="language-cpp">LPVOID lpBuffer = new char[17]; //Buffer für die Daten(Nullterminierung nicht vergessen bei Ausgabe als String)
</code></pre>
<p>Die Angelegenheit mit den Hooks schießt meiner Meinung nach etwas über das Ziel hinaus. Das Auslesen von Speicher fremder Prozesse funktioniert auf diesem wege 100-prozentig. und deine Zugriffsflags reichen eigentlich auch, das wäre somit die einzige Erklärung. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/726812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/726812</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Fri, 18 Feb 2005 21:33:58 GMT</pubDate></item></channel></rss>