<?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 - Problem]]></title><description><![CDATA[<p>Hi ! <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 />
Da es kein Unterforum für C++-Nichtkönner gibt, poste ich mal hier, hat ja etwas mit einer WinAPI-Funktion zu tun.</p>
<p>Also, ich wollte mal versuchen die Y-Koordinate des Spielercharakters in WoW auszulesen. Dafür habe ich 4 Stellen im Speicher gefunden, die ganz klar den aktuellen Punkt als Float-Variable zeigen.</p>
<p>Das sieht mit einem Hilfsprogramm so aus (korrekt wie es sein soll):</p>
<p><a href="http://i39.tinypic.com/10fat51.jpg" rel="nofollow">http://i39.tinypic.com/10fat51.jpg</a></p>
<p>Diesen Wert wollte ich jetzt per C++-Funktion zur Verarbeitung auslesen. Habe mir erstmal zum Test ein Dummy-Programm gemacht und es funktioniert einfach nicht, der einzige Output ist:</p>
<blockquote>
<p>19065760: 7.80083e+033</p>
</blockquote>
<p>Bitte grobe C++-Fehler/Holzfällerstil entschuldigen, 7 Monate lang C++ nicht angefasst. :&gt;</p>
<p>Hier ist das Programm, was habe ich falsch gemacht ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;windows.h&gt;
using namespace std;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    unsigned offset = 0x122EBA0;

    HWND wow_window;
    DWORD wow_process_id;
    DWORD number_of_read_bytes = 0;
    HANDLE wow_process_handle;

    float received_bytes ;

    wow_window = FindWindow(NULL, &quot;World of Warcraft&quot;);

    if(!wow_window)
    {
                   cout &lt;&lt; &quot;\nCouldn't find window \n&quot;;
                   return -1;
    }

    GetWindowThreadProcessId(wow_window, &amp;wow_process_id);

    wow_process_handle = OpenProcess(PROCESS_ALL_ACCESS, false, wow_process_id);

    while(true)
    {
                       ReadProcessMemory(wow_process_handle, (LPCVOID)offset, &amp;received_bytes, sizeof(received_bytes), &amp;number_of_read_bytes);
                       cout &lt;&lt; &quot;\n&quot; &lt;&lt; offset &lt;&lt; &quot;: &quot; &lt;&lt; received_bytes;
                       Sleep(2000);
    }

    return 0;
}
</code></pre>
<p>Danke schon mal !</p>
<p>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235829/readprocessmemory-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 02:40:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235829.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Mar 2009 22:28:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 22:28:07 GMT]]></title><description><![CDATA[<p>Hi ! <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 />
Da es kein Unterforum für C++-Nichtkönner gibt, poste ich mal hier, hat ja etwas mit einer WinAPI-Funktion zu tun.</p>
<p>Also, ich wollte mal versuchen die Y-Koordinate des Spielercharakters in WoW auszulesen. Dafür habe ich 4 Stellen im Speicher gefunden, die ganz klar den aktuellen Punkt als Float-Variable zeigen.</p>
<p>Das sieht mit einem Hilfsprogramm so aus (korrekt wie es sein soll):</p>
<p><a href="http://i39.tinypic.com/10fat51.jpg" rel="nofollow">http://i39.tinypic.com/10fat51.jpg</a></p>
<p>Diesen Wert wollte ich jetzt per C++-Funktion zur Verarbeitung auslesen. Habe mir erstmal zum Test ein Dummy-Programm gemacht und es funktioniert einfach nicht, der einzige Output ist:</p>
<blockquote>
<p>19065760: 7.80083e+033</p>
</blockquote>
<p>Bitte grobe C++-Fehler/Holzfällerstil entschuldigen, 7 Monate lang C++ nicht angefasst. :&gt;</p>
<p>Hier ist das Programm, was habe ich falsch gemacht ?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;windows.h&gt;
using namespace std;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    unsigned offset = 0x122EBA0;

    HWND wow_window;
    DWORD wow_process_id;
    DWORD number_of_read_bytes = 0;
    HANDLE wow_process_handle;

    float received_bytes ;

    wow_window = FindWindow(NULL, &quot;World of Warcraft&quot;);

    if(!wow_window)
    {
                   cout &lt;&lt; &quot;\nCouldn't find window \n&quot;;
                   return -1;
    }

    GetWindowThreadProcessId(wow_window, &amp;wow_process_id);

    wow_process_handle = OpenProcess(PROCESS_ALL_ACCESS, false, wow_process_id);

    while(true)
    {
                       ReadProcessMemory(wow_process_handle, (LPCVOID)offset, &amp;received_bytes, sizeof(received_bytes), &amp;number_of_read_bytes);
                       cout &lt;&lt; &quot;\n&quot; &lt;&lt; offset &lt;&lt; &quot;: &quot; &lt;&lt; received_bytes;
                       Sleep(2000);
    }

    return 0;
}
</code></pre>
<p>Danke schon mal !</p>
<p>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675544</guid><dc:creator><![CDATA[Flo_x]]></dc:creator><pubDate>Fri, 06 Mar 2009 22:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 23:18:38 GMT]]></title><description><![CDATA[<p>Du brauchst die Prozess-ID und nicht eine Thread-ID...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675555</guid><dc:creator><![CDATA[Halbwissen]]></dc:creator><pubDate>Fri, 06 Mar 2009 23:18:38 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 23:25:47 GMT]]></title><description><![CDATA[<p>Halbwissen schrieb:</p>
<blockquote>
<p>Du brauchst die Prozess-ID und nicht eine Thread-ID...</p>
</blockquote>
<p>Hmm, bei Testprogrammen die ich selber gemacht habe hat es mit dem oben von mir geposteten Code tadellos geklappt den Wert von Variablen zu lesen.</p>
<p>Deswegen würde es mich wundern warum es jetzt anders sein sollte.</p>
<p>Aber ich kann es gerne anders probieren.</p>
<p>Welche Funktion würdest du mir vorschlagen?</p>
<p>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675556</guid><dc:creator><![CDATA[flo_x]]></dc:creator><pubDate>Fri, 06 Mar 2009 23:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 23:39:39 GMT]]></title><description><![CDATA[<p>kA, vielleicht hängt es mit den Thread-Basisadressen zusammen. Dein Programm hat wohl nur den Hauptthread gehabt, aber kA.</p>
<p>Versuch's mal damit:</p>
<pre><code class="language-cpp">unsigned long GetProcessIdByName(const std::string&amp; name)
{
	void* snapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	PROCESSENTRY32 processEntry = { sizeof(PROCESSENTRY32) };

	if(Process32First(snapshotHandle, &amp;processEntry))
	{
		do
		{
			std::string tempName = processEntry.szExeFile;
			std::transform(tempName.begin(), tempName.end(), tempName.begin(), tolower);

			if(tempName == name)
			{
				CloseHandle(snapshotHandle);
				return processEntry.th32ProcessID;
			}
		}
		while(Process32Next(snapshotHandle, &amp;processEntry));
	}

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1675561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675561</guid><dc:creator><![CDATA[Halbwissen]]></dc:creator><pubDate>Fri, 06 Mar 2009 23:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 23:40:28 GMT]]></title><description><![CDATA[<p>Blöd von mir.<br />
Hab nicht bedacht dass WoW als Systemprogramm läuft. Hab eben mit dem Tool permedit mein Programm auch als Systemprogramm laufen lassen und voila - es klappt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Kann geclosed/gelöscht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675562</guid><dc:creator><![CDATA[Flo_x]]></dc:creator><pubDate>Fri, 06 Mar 2009 23:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Fri, 06 Mar 2009 23:45:23 GMT]]></title><description><![CDATA[<p>Oh, GetWindowThread<strong>ProcessId</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ich Depp...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675565</guid><dc:creator><![CDATA[Halbwissen]]></dc:creator><pubDate>Fri, 06 Mar 2009 23:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 01:26:47 GMT]]></title><description><![CDATA[<p>Halbwissen schrieb:</p>
<blockquote>
<p>Oh, GetWindowThread<strong>ProcessId</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ich Depp...</p>
</blockquote>
<p>Hehe.<br />
Das mit dem extra zum Systemprozess ändern mit Permedit ist echt lästig.</p>
<p>Wie kann man ein Programm dauerhaft als Systemprogramm definieren ?</p>
<p>Grüße,<br />
Flo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675578</guid><dc:creator><![CDATA[flo_x]]></dc:creator><pubDate>Sat, 07 Mar 2009 01:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 01:42:05 GMT]]></title><description><![CDATA[<p>Was meinst du genau <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/1675580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675580</guid><dc:creator><![CDATA[Halbwissen]]></dc:creator><pubDate>Sat, 07 Mar 2009 01:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 01:54:47 GMT]]></title><description><![CDATA[<p>Halbwissen schrieb:</p>
<blockquote>
<p>Was meinst du genau <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>
</blockquote>
<p>Der Grund, warum davor nichts ging.<br />
WoW.exe läuft als Systemprozess und lässt sich deswegen nicht den Speicher lesen. Mit dem Tool &quot;permedit&quot; habe ich meinem Programm diese Rechte gegeben und es hat geklappt.<br />
Deswegen habe ich gefragt, wie man ein Programm unter Windows standardmäßig als Systemprozess benutzen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675582</guid><dc:creator><![CDATA[flo_x]]></dc:creator><pubDate>Sat, 07 Mar 2009 01:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 02:03:52 GMT]]></title><description><![CDATA[<p>Such mal hier im WinAPI-Forum nach &quot;SE_DEBUG_PRIVILEGE&quot; und wie man es seinem Programm verpassen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675583</guid><dc:creator><![CDATA[vollwissen]]></dc:creator><pubDate>Sat, 07 Mar 2009 02:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 04:41:01 GMT]]></title><description><![CDATA[<p>Irgendwie so zB</p>
<pre><code class="language-cpp">void* tokenHandle;
	OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &amp;tokenHandle);
	TOKEN_PRIVILEGES privilegeToken;
	LookupPrivilegeValue(0, SE_DEBUG_NAME, &amp;privilegeToken.Privileges[0].Luid);
	privilegeToken.PrivilegeCount = 1;
	privilegeToken.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	AdjustTokenPrivileges(tokenHandle, 0, &amp;privilegeToken, sizeof(TOKEN_PRIVILEGES), 0, 0);
	CloseHandle(tokenHandle);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1675589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675589</guid><dc:creator><![CDATA[Halbwissen]]></dc:creator><pubDate>Sat, 07 Mar 2009 04:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to ReadProcessMemory - Problem on Sat, 07 Mar 2009 10:20:20 GMT]]></title><description><![CDATA[<p>Super, danke Halbwissen.<br />
Klappt so genau wie ich es haben will <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="😉"
    /></p>
<p>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675618</guid><dc:creator><![CDATA[flo_x]]></dc:creator><pubDate>Sat, 07 Mar 2009 10:20:20 GMT</pubDate></item></channel></rss>