<?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 char readen]]></title><description><![CDATA[<p>Hallo<br />
Bin am C++ lernen.<br />
Ich habe aus dem Windows Spiel Minesweeper erfolgreich die Variable &quot;Zeit&quot;<br />
aus dem Ram gelesen und geändert. Jetzt wollte ich das bei einem Spiel machen<br />
den der Name meines Charakters ausgeben. Aber das Funktioniert nicht mehr.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;

using namespace std;

int main(void)
{
    HWND hWnd;
    HANDLE hproc;
    DWORD procid;
    DWORD rw = 0;

    unsigned RamCharname = 0x00C208F8;

    char *buffer;

    hWnd = FindWindow(0,&quot;Spielname&quot;);
    if(!hWnd)
        cout &lt;&lt; &quot;Opfer Programm nicht gefunden\nBeendet in 3 Sekunden...&quot; &lt;&lt; endl;
        //return 0;

    GetWindowThreadProcessId(hWnd, &amp;procid);

    hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);

    if(ReadProcessMemory(hproc, (LPCVOID)RamCharname, &amp;buffer, 20, &amp;rw))
    {
        cout &lt;&lt; &quot;Charaktername: &quot; &lt;&lt; buffer &lt;&lt; endl;
        cout &lt;&lt; buffer;
    }
    else
    {
        cout &lt;&lt; &quot;Datenblock konnte nicht gelesen werden&quot; &lt;&lt; endl;
    }

    CloseHandle(hproc);//
    Sleep(3000);
    return 0;
}
</code></pre>
<p>Die Ram Adresse ist korrekt, kann mit ArtMoney nachsehen und es bestätigt sich.<br />
Aber C++ ist so komplex, ich könnte hundert Dinge falsch gemacht haben könnte.<br />
Eine int Var konnte ich so auslesen, aber bei Chars seh ich immer nur<br />
meine Fehlermeldung &quot;Datenblock konnte nicht gelesen werden&quot;. Hab viel<br />
gegooglet und herumgetüftelt.<br />
Danke für Eure Mühe!<br />
mfg<br />
Vampir</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183938/readprocessmemory-char-readen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 07:27:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183938.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jun 2007 17:03:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ReadProcessMemory char readen on Sun, 10 Jun 2007 17:03:31 GMT]]></title><description><![CDATA[<p>Hallo<br />
Bin am C++ lernen.<br />
Ich habe aus dem Windows Spiel Minesweeper erfolgreich die Variable &quot;Zeit&quot;<br />
aus dem Ram gelesen und geändert. Jetzt wollte ich das bei einem Spiel machen<br />
den der Name meines Charakters ausgeben. Aber das Funktioniert nicht mehr.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;
#include &lt;string.h&gt;

using namespace std;

int main(void)
{
    HWND hWnd;
    HANDLE hproc;
    DWORD procid;
    DWORD rw = 0;

    unsigned RamCharname = 0x00C208F8;

    char *buffer;

    hWnd = FindWindow(0,&quot;Spielname&quot;);
    if(!hWnd)
        cout &lt;&lt; &quot;Opfer Programm nicht gefunden\nBeendet in 3 Sekunden...&quot; &lt;&lt; endl;
        //return 0;

    GetWindowThreadProcessId(hWnd, &amp;procid);

    hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid);

    if(ReadProcessMemory(hproc, (LPCVOID)RamCharname, &amp;buffer, 20, &amp;rw))
    {
        cout &lt;&lt; &quot;Charaktername: &quot; &lt;&lt; buffer &lt;&lt; endl;
        cout &lt;&lt; buffer;
    }
    else
    {
        cout &lt;&lt; &quot;Datenblock konnte nicht gelesen werden&quot; &lt;&lt; endl;
    }

    CloseHandle(hproc);//
    Sleep(3000);
    return 0;
}
</code></pre>
<p>Die Ram Adresse ist korrekt, kann mit ArtMoney nachsehen und es bestätigt sich.<br />
Aber C++ ist so komplex, ich könnte hundert Dinge falsch gemacht haben könnte.<br />
Eine int Var konnte ich so auslesen, aber bei Chars seh ich immer nur<br />
meine Fehlermeldung &quot;Datenblock konnte nicht gelesen werden&quot;. Hab viel<br />
gegooglet und herumgetüftelt.<br />
Danke für Eure Mühe!<br />
mfg<br />
Vampir</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302613</guid><dc:creator><![CDATA[Vampir]]></dc:creator><pubDate>Sun, 10 Jun 2007 17:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Sun, 10 Jun 2007 19:45:10 GMT]]></title><description><![CDATA[<p>ist denn hproc gültig? also kann der prozess gefunden werden?</p>
<p>weiterhin, versuchs mal so:</p>
<pre><code class="language-cpp">char buffer[20];
// ...

ReadProcessMemory(hproc, adresse, buffer, 20, NULL)
</code></pre>
<p>Buffer ist ja schon ein zeiger. Wenn das nicht klappt, schau dir den Output von GetLastError an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302717</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 10 Jun 2007 19:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 04:40:19 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.<br />
Du hattest recht, hab hproc jetzt so geschrieben:</p>
<pre><code class="language-cpp">if(hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procid))
{
   cout &lt;&lt; &quot;hproc ist gültig&quot; &lt;&lt; endl;
}else{
   cout &lt;&lt; &quot;hproc ist ungueltig&quot; &lt;&lt; endl;
}
</code></pre>
<p>hproc ist ungültig. Kann es sein, dass es nicht geht, weil sich das Programm<br />
als Dienst tarnt? Hatte nähmlich anfangs auch Probleme das Proggi<br />
in ArtMoney zu öffnen. Ich will den Ram des Spiels nur lesen, schreiben ist<br />
nicht wichtig.<br />
Was könnte ich nun tun?<br />
Danke für hilfe.<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302852</guid><dc:creator><![CDATA[vampir26]]></dc:creator><pubDate>Mon, 11 Jun 2007 04:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 08:49:07 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-403.html" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302937</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 11 Jun 2007 08:49:07 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 09:36:19 GMT]]></title><description><![CDATA[<p>Man könnte versuchen die Doku zu OpenProcess zu lesen:<br />
<a href="http://msdn2.microsoft.com/en-us/library/ms684320.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms684320.aspx</a></p>
<p>Dort könntest Du erfahren das es GetLastError gibt, was Dir sagt warum es nicht klappt.</p>
<p>Weiterhin könntest Du den interessanten Link lesen, der auch dort steht:<br />
To open a handle to another another local process and obtain full access rights, you must enable the SeDebugPrivilege privilege. For more information, see Changing Privileges in a Token.</p>
<p><a href="http://msdn2.microsoft.com/en-us/library/ms717797.aspx" rel="nofollow">http://msdn2.microsoft.com/en-us/library/ms717797.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1302960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1302960</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 11 Jun 2007 09:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 14:12:12 GMT]]></title><description><![CDATA[<p>Tatsächlich, wie ich vermutet habe: Error Code 5: ERROR_ACCESS_DENIED.<br />
Aber es <strong>muss</strong> möglich sein, den Ram dieses Spiels zu lesen, denn es<br />
gibt andere Programme die dies bereits tun.</p>
<p>Obwohl ich den 2. Link nicht ganz entschlüsseln konnte, gehe ich davon<br />
aus, dass ich mit der Funktion AdjustTokenPrivileges(); die Rechte so ändern<br />
kann, dass ich Access habe? Hab etwas rumprobiert, aber der Spukt nur Errors aus.<br />
Hier meine Variante:</p>
<pre><code class="language-cpp">AdjustTokenPrivileges(null, false, SE_PRIVILEGE_REMOVED, 20, null, null);
</code></pre>
<p>Hier kommt wieder Ihr ins Spiel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Ich sags nochmal, ich <strong>lerne</strong> C++, ich <strong>kanns</strong> nicht.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303185</guid><dc:creator><![CDATA[vampir26]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 14:20:48 GMT]]></title><description><![CDATA[<p>vampir26 schrieb:</p>
<blockquote>
<p>Ich sags nochmal, ich <strong>lerne</strong> C++, ich <strong>kanns</strong> nicht.</p>
</blockquote>
<p>Du lernst! Genau, deshlab habe ich Dir ja auch alle Infos schon gegeben.<br />
Als erstes solltest Du lernen die Doku zu lesen. Oder Google zu benutzen.</p>
<p>In meiner Antwort stand alles drin:</p>
<blockquote>
<p>To open a handle to another another local process and obtain full access rights, you must enable the <strong>SeDebugPrivilege</strong> privilege. For more information, see Changing Privileges in a Token.</p>
</blockquote>
<p>Die Suche nach AdjustTokenPrivileges und SeDebugPrivilege über Google hätte dich in exakt 0,06 Sekunden ans Ziel gebracht:<br />
<a href="http://support.microsoft.com/kb/131065/en-us" rel="nofollow">http://support.microsoft.com/kb/131065/en-us</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303196</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 11 Jun 2007 14:20:48 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Mon, 11 Jun 2007 15:12:27 GMT]]></title><description><![CDATA[<p>Hier, vielleicht hilft dir das auch etwas weiter:</p>
<p><a href="http://www.skillhackerz.com/Chaotic/Tutorial/Mh1/index.htm" rel="nofollow">http://www.skillhackerz.com/Chaotic/Tutorial/Mh1/index.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1303268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1303268</guid><dc:creator><![CDATA[gaylord]]></dc:creator><pubDate>Mon, 11 Jun 2007 15:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory char readen on Wed, 13 Jun 2007 20:01:32 GMT]]></title><description><![CDATA[<p>Vielen Dank es funktioniert!<br />
gaylord, dein Link ist sehr gut, sehr einfach zu verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305181</guid><dc:creator><![CDATA[vampir26]]></dc:creator><pubDate>Wed, 13 Jun 2007 20:01:32 GMT</pubDate></item></channel></rss>