<?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[Addresswerte aus anderen Prozessen auslesen und verwenden]]></title><description><![CDATA[<p>Hallo, wie kann ich mir zb in der Konsole die Lebenspunkte aus einem Spiel anzeigen lassen?</p>
<p>Habe relativ lange gesucht... was ich bis jetzt habe:</p>
<p>Addresse im prozess des Spiels von den Lebenspunkten</p>
<pre><code class="language-cpp">#define HealthPlayer = 0x0032;

int main(){

HWND Diablo = FindWindow(&quot;Diablo II&quot;,NULL);

cout&lt;&lt;HelthPlayer&lt;&lt;endl;

if(HealthPlayer &lt; 50){

SendMessage(Diablo,WM_KEYDOWN, VK_F1,NULL)

}
</code></pre>
<p>Also nun zu meinen Fragen, habe relativ lange gesucht und nichts wirkliches gefunden wie ich genau Addresswerte von einem anderen Prozess in mein Programm einbinden kann. Wie muss denn der Code genau heißen ,dass dies auch funktioniert? (Der oben geschriebene Code funktioniert nicht)</p>
<p>mit der Funktion<br />
SendMessage(Diablo,WM_KEYDOWN, VK_F1,NULL)</p>
<p>gelingt es mir zwar die Taste F1 an das minimierte Fenster zu senden, aber wie ist es mir möglich andere Tasten zu senden wie zum Beispiel einfach &quot;5&quot; oder einen Text String?</p>
<p>Wäre super wenn mir jemand sagen könnte wie ich solche Pointer/Addressen aus anderen Programmen verwenden kann, oder wenn mir jemand einen richtigen Begriff zum googlen gibt :).</p>
<p>Wäre sehr dankbar über Antworten <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/252838/addresswerte-aus-anderen-prozessen-auslesen-und-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:16:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252838.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Oct 2009 12:06:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 12:07:54 GMT]]></title><description><![CDATA[<p>Hallo, wie kann ich mir zb in der Konsole die Lebenspunkte aus einem Spiel anzeigen lassen?</p>
<p>Habe relativ lange gesucht... was ich bis jetzt habe:</p>
<p>Addresse im prozess des Spiels von den Lebenspunkten</p>
<pre><code class="language-cpp">#define HealthPlayer = 0x0032;

int main(){

HWND Diablo = FindWindow(&quot;Diablo II&quot;,NULL);

cout&lt;&lt;HelthPlayer&lt;&lt;endl;

if(HealthPlayer &lt; 50){

SendMessage(Diablo,WM_KEYDOWN, VK_F1,NULL)

}
</code></pre>
<p>Also nun zu meinen Fragen, habe relativ lange gesucht und nichts wirkliches gefunden wie ich genau Addresswerte von einem anderen Prozess in mein Programm einbinden kann. Wie muss denn der Code genau heißen ,dass dies auch funktioniert? (Der oben geschriebene Code funktioniert nicht)</p>
<p>mit der Funktion<br />
SendMessage(Diablo,WM_KEYDOWN, VK_F1,NULL)</p>
<p>gelingt es mir zwar die Taste F1 an das minimierte Fenster zu senden, aber wie ist es mir möglich andere Tasten zu senden wie zum Beispiel einfach &quot;5&quot; oder einen Text String?</p>
<p>Wäre super wenn mir jemand sagen könnte wie ich solche Pointer/Addressen aus anderen Programmen verwenden kann, oder wenn mir jemand einen richtigen Begriff zum googlen gibt :).</p>
<p>Wäre sehr dankbar über Antworten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1797906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797906</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Sun, 25 Oct 2009 12:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 12:11:01 GMT]]></title><description><![CDATA[<p><a href="http://msdn.microsoft.com/en-us/library/ms680553(VS.85).aspx" rel="nofollow">::ReadProcessMemory() <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="😉"
    /></a><br />
Den Prozess öffnen und dir die Zugriffsrechte holen musst du aber dennoch selber machen. Ansonsten steckt die Antwort auf deine Frage in diesem Tutorial:<br />
<a href="http://spieleprogrammierer.de/phpBB2/viewtopic.php?t=9544" rel="nofollow">http://spieleprogrammierer.de/phpBB2/viewtopic.php?t=9544</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797911</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 25 Oct 2009 12:11:01 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 12:21:28 GMT]]></title><description><![CDATA[<p>vorerst: falsches forum - winapi wäre richtiger</p>
<p>&quot;gelingt es mir zwar die Taste F1 an das minimierte Fenster zu senden, aber wie ist es mir möglich andere Tasten zu senden wie zum Beispiel einfach &quot;5&quot; oder einen Text String?&quot;<br />
a-z = 'A', ..., 'Z'<br />
0-9 = '0', ..., '9'<br />
wenn mich nicht alles täuscht<br />
numpad ziffern sind aber wieder über makros belegt:<br />
VK_NUMPAD_0<br />
oder so in der richtung</p>
<p>texte kannst du also entweder mit key down / key up / ... machen oder.. hmm - da gabs noch irgendwas - musst du mal selbst nach WPARAM suchen(in der windows.h oder wo auch immer das genau ist(rechtsklick -&gt; go to definition) oder ausgehend von hier:<br />
<a href="http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx</a></p>
<p><code>#define HealthPlayer = 0x0032;</code><br />
1. ist es ne adresse - das weiß man aber nicht, wenn man das makro sieht<br />
und<br />
2. wieso nen makro und keinen const pointer?<br />
<code>const void* player_hp_address = 0x32;</code><br />
zum einlesen an sich hat ja K. schon was geschrieben</p>
<p>Wenn mich nicht alles täuscht, dann sollte man <code>SendMessage</code> auch lieber nicht mehr verwenden... (ich dachte da gabs irgend ne fkt, die mit nem kürzel wie bd_ anfing, aber konnte den namen nicht mehr finden &gt;.&lt;)<br />
vll weiß ja jmd im winapi forum so was <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=";D"
      alt="😉"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797918</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sun, 25 Oct 2009 12:21:28 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 13:25:25 GMT]]></title><description><![CDATA[<p>Danke für die Hilfreichen Antworten , ihr habt mir beide weiter geholfen <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="🙂"
    /> Das mit dem String senden hat nun auch so halb geklappt (geht nur wenn das chatfenster in diablo geschlossen ist)</p>
<p>nur leider wenn ich ehrlich bin blick ich beim tutorial und bei der readprocessmemory beschreibung nicht so wirklich durch.</p>
<pre><code class="language-cpp">HWND Diablo = FindWindow(&quot;Diablo II&quot;,NULL);
</code></pre>
<p>dieses Handle gilt nur für das Window und nicht für den Prozess selbst oder? also folglich wenn ich das richtig verstanden habe kann ich die HWND Diablo nicht für die Funktion ReadProcessMemory() verwenden ,das hier der Process Handle gesucht wird ist das richtig so :/?</p>
<pre><code class="language-cpp">ReadProcessMemory(
  __in   HANDLE hProcess,
  __in   LPCVOID lpBaseAddress,
  __out  LPVOID lpBuffer,
  __in   SIZE_T nSize,
  __out  SIZE_T *lpNumberOfBytesRead
);
</code></pre>
<p>hProcess wie bekomm ich den?<br />
lpBaseAddress, hier die gewünschte Addresse die ich ablesen möchte oder?<br />
lpBuffer = ?<br />
nSize = Größe des Wertes?<br />
lpNumberofBytesRead = ?</p>
<p>Vielleicht sollte ich noch anmerken ,dass meine C++ relativ gering angesiedelt sind aber ich gerade dran bin sie zu verbessern :).</p>
<p>Das tutorial aus der ersten Antwort sieht sehr interessant aus und scheint wohl als ob dieses auch alle informationen enthält die ich brauche nur sind meine Kenntnisse leider zu Gering um das ganze auch wirklich zu verstehen.</p>
<p>Ein kleiner beispielcode im Umfang von 2-3 Zeilen mit Erklärung würde mich sehr weiter bringen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797950</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Sun, 25 Oct 2009 13:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 14:05:10 GMT]]></title><description><![CDATA[<p>Ok.</p>
<pre><code class="language-cpp">// Fenster auswählen 
::HWND hwnd = select_window (); 

// Scann starten... 
::DWORD process_ID; 
// Zum Fenster zugehörigen Prozess ermitteln 
::DWORD thread_ID = ::GetWindowThreadProcessId (hwnd, &amp;process_ID); 
// In den Prozess einklinken 
::HANDLE process = ::OpenProcess (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF, FALSE, process_ID);
</code></pre>
<p>Fenster auswählen, Prozess finden, Prozess öffnen.</p>
<p>Dann:</p>
<pre><code class="language-cpp">unsigned int adressBuffer(0);
::ReadProcessMemory(process, // Hier das Handle vom Prozess
                    0xfff, // Adresse die ausgelesen werden soll
                    &amp;adressBuffer, // Hier wird der Inhalt der Adresse gespeichert
                    sizeof(adressBuffer), // Gibt an wieviele Bytes eingelesen werden sollen  
                    NULL); // &quot;A pointer to a variable that receives the number of bytes transferred&quot; (-;
</code></pre>
<p>Sollte eigentlich so stimmen, habe es aber nicht getestet. Damit du weißt welche Adresse die HP-Variable (Ladebalken) hat, besorgste dir ein Tool wie beispielsweise TSearch. Dann suchst du im angeforderten Arbeitsspeicher des Programmes (macht TSearch) nach 100. Dann ziehst du ein HP ab (im Spiel) und aktualisierst die Speicheradressen in TSearch. Nach spätestens 10 Aktualisierungen solltest du nur noch eine Adresse haben und diese ist dann die richtige.</p>
<p>Du kannst dir natürlich auch selber ein Programm schreiben das die Aufgabe von TSearch übernimmt. Allerdings habe ich damals schlechte Erfahrungen mit der WinAPI und OOP gemacht (vielleicht weil ich noch nichts konnte). <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>Ich hoffe ich habe nichts falsches gesagt (Angst hab vor unskilled).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797985</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 25 Oct 2009 14:05:10 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 14:52:29 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Ok.</p>
<pre><code class="language-cpp">// Fenster auswählen 
::HWND hwnd = select_window (); 

// Scann starten... 
::DWORD process_ID; 
// Zum Fenster zugehörigen Prozess ermitteln 
::DWORD thread_ID = ::GetWindowThreadProcessId (hwnd, &amp;process_ID); 
// In den Prozess einklinken 
::HANDLE process = ::OpenProcess (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF, FALSE, process_ID);
</code></pre>
<p>Fenster auswählen, Prozess finden, Prozess öffnen.</p>
<p>Dann:</p>
<pre><code class="language-cpp">unsigned int adressBuffer(0);
::ReadProcessMemory(process, // Hier das Handle vom Prozess
                    0xfff, // Adresse die ausgelesen werden soll
                    &amp;adressBuffer, // Hier wird der Inhalt der Adresse gespeichert
                    sizeof(adressBuffer), // Gibt an wieviele Bytes eingelesen werden sollen  
                    NULL); // &quot;A pointer to a variable that receives the number of bytes transferred&quot; (-;
</code></pre>
<p>Sollte eigentlich so stimmen, habe es aber nicht getestet. Damit du weißt welche Adresse die HP-Variable (Ladebalken) hat, besorgste dir ein Tool wie beispielsweise TSearch. Dann suchst du im angeforderten Arbeitsspeicher des Programmes (macht TSearch) nach 100. Dann ziehst du ein HP ab (im Spiel) und aktualisierst die Speicheradressen in TSearch. Nach spätestens 10 Aktualisierungen solltest du nur noch eine Adresse haben und diese ist dann die richtige.</p>
<p>Du kannst dir natürlich auch selber ein Programm schreiben das die Aufgabe von TSearch übernimmt. Allerdings habe ich damals schlechte Erfahrungen mit der WinAPI und OOP gemacht (vielleicht weil ich noch nichts konnte). <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>Ich hoffe ich habe nichts falsches gesagt (Angst hab vor unskilled).</p>
</blockquote>
<p>vielen dank <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="🙂"
    /> jedoch gibt der compiler (dev c++) bei folgender zeile</p>
<pre><code class="language-cpp">NULL); // &quot;A pointer to a variable that receives the number of bytes transferred&quot; (-;
</code></pre>
<p>folgende fehlermeldung an: 39 invalid conversion from `int' to `const void*'</p>
<p>achja</p>
<pre><code class="language-cpp">// Fenster auswählen
::HWND hwnd = select_window ();
</code></pre>
<p>ist einfach das window handle from programm oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798021</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Sun, 25 Oct 2009 14:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 15:03:23 GMT]]></title><description><![CDATA[<p>lekos schrieb:</p>
<blockquote>
<p>folgende fehlermeldung an: 39 invalid conversion from `int' to `const void*'</p>
</blockquote>
<p>Dann 0. NULL ist (wie unskilled in einem anderen Thread sagte) für Zeiger.</p>
<p>lekos schrieb:</p>
<blockquote>
<p>ist einfach das window handle from programm oder?</p>
</blockquote>
<p>Genau. Sprich du kannst dir das Handle auch einfach mit:</p>
<pre><code class="language-cpp">::HWND hWnd = ::FindWindow(...);
</code></pre>
<p>holen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798024</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 25 Oct 2009 15:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 15:08:55 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>lekos schrieb:</p>
<blockquote>
<p>folgende fehlermeldung an: 39 invalid conversion from `int' to `const void*'</p>
</blockquote>
<p>Dann 0. NULL ist (wie unskilled in einem anderen Thread sagte) für Zeiger.</p>
<p>lekos schrieb:</p>
<blockquote>
<p>ist einfach das window handle from programm oder?</p>
</blockquote>
<p>Genau. Sprich du kannst dir das Handle auch einfach mit:</p>
<pre><code class="language-cpp">::HWND hWnd = ::FindWindow(...);
</code></pre>
<p>holen.</p>
</blockquote>
<p>0 liefert mir leider genau den gleichen fehler zurück <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798026</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Sun, 25 Oct 2009 15:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 15:11:53 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>vorerst: falsches forum - winapi wäre richtiger</p>
</blockquote>
<p>richtiger...</p>
<p>bald gibt es bool mit drei möglichen Werten: ja - nein - vielleicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798029</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Sun, 25 Oct 2009 15:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 15:21:19 GMT]]></title><description><![CDATA[<p>lekos schrieb:</p>
<blockquote>
<p>0 liefert mir leider genau den gleichen fehler zurück <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Das ist doch ein Zeiger, dann:</p>
<pre><code class="language-cpp">::ReadProcessMemory(process,
                    reinterpret_cast&lt;void *&gt; (0xfff), // Erwartet nämlich einen Zeiger auf void
                    &amp;addressBuffer,
                    sizeof(addressBuffer),
                    NULL);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798043</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 25 Oct 2009 15:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 18:22:44 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>unskilled schrieb:</p>
<blockquote>
<p>vorerst: falsches forum - winapi wäre richtiger</p>
</blockquote>
<p>richtiger...</p>
<p>bald gibt es bool mit drei möglichen Werten: ja - nein - vielleicht</p>
</blockquote>
<p>Was babbelst du eigentlich? unskilled hat doch Recht oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798154</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 25 Oct 2009 18:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Sun, 25 Oct 2009 18:54:33 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>bald gibt es bool mit drei möglichen Werten: ja - nein - vielleicht</p>
</blockquote>
<p>boost::tribool? Siehe auch <a href="http://de.wikipedia.org/wiki/Dreiwertige_Logik" rel="nofollow">http://de.wikipedia.org/wiki/Dreiwertige_Logik</a> bzw. allgemeiner <a href="http://de.wikipedia.org/wiki/Mehrwertige_Logik" rel="nofollow">http://de.wikipedia.org/wiki/Mehrwertige_Logik</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798179</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 25 Oct 2009 18:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 15:52:42 GMT]]></title><description><![CDATA[<p>huhu, hab gestern noch bisschen rumpobiert</p>
<p>kommt folgendes raus, addressen die mit 0x.... beginnen kann ich problemlos compilen sobald ich jedoch eine addresse hab die zb nur so aussieht: 0326D935 geht das ganze schon nicht mehr zum compilen. Worin liegt denn der unterschied wenn ein 0x voransteht?</p>
<p>hier mal ein screen von dem problem und der compiler fehlermeldung:</p>
<p><a href="http://s5.directupload.net/images/091026/c32k9qq6.jpg" rel="nofollow">http://s5.directupload.net/images/091026/c32k9qq6.jpg</a></p>
<p>mein ziel ist nur dieses 1631 anzuzeigen lassen in der Konsole.</p>
<p>Ich hoffe meine Fragen sind nicht zu dumm :/.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798647</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 15:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 16:57:37 GMT]]></title><description><![CDATA[<p>Der Compiler interpretiert 0x als Hexadezimalzahl. Der Wert den du da hast ist nicht der wahre Wert. Sprich: Hexa != Dezimal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798681</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 16:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 16:59:37 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Der Compiler interpretiert 0x als Hexadezimalzahl. Der Wert den du da hast ist nicht der wahre Wert. Sprich: Hexa != Dezimal.</p>
</blockquote>
<p>Klingt einleuchtend , und wie kann ich dieses problem umgehen :(?</p>
<p>Muss ich den wert einfach umrechnen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798683</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 16:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 17:12:00 GMT]]></title><description><![CDATA[<p>Wie liegt der Wert denn vor? Falls du ihn &quot;von Hand&quot; an ::ReadProcessMemory() übergeben möchtest, mach einfach ein 0x davor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798688</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 17:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 17:21:25 GMT]]></title><description><![CDATA[<p>Also, der Wert den ich angezeigt haben möchte ist eine normale integer Zahl (in meinem Fall: 1631), die zugehörige Addresse ist laut CheatEngine: 05BDBE35</p>
<p>eingesetzt im Code sieht es dann so aus:</p>
<pre><code class="language-cpp">unsigned int wert;
::ReadProcessMemory(process,
                    reinterpret_cast&lt;void *&gt; (05BDBE35), // Erwartet nämlich einen Zeiger auf void
                    &amp;wert,
                    sizeof(wert),
                    NULL);
</code></pre>
<p>wenn ich jedoch compilen will kommt folgender Fehler:</p>
<blockquote>
<p>invalid suffix &quot;BDBE35&quot; on integer constant</p>
</blockquote>
<p>Wenn ich ein 0x davor mache also so:</p>
<pre><code class="language-cpp">unsigned int wert;
::ReadProcessMemory(process,
                    reinterpret_cast&lt;void *&gt; (0x05BDBE35), // Erwartet nämlich einen Zeiger auf void
                    &amp;wert,
                    sizeof(wert),
                    NULL);
</code></pre>
<p>geht es zwar zum compilen wenn ich dann jedoch den Wert<br />
&amp;wert ausgebe kommt eine komplett falsche Zahl heraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798689</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 17:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 17:30:43 GMT]]></title><description><![CDATA[<p>&quot;&amp;&quot; ist in diesem Falle der Adressoperator. Also ohne &quot;&amp;&quot;...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798692</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 17:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 17:34:14 GMT]]></title><description><![CDATA[<p>hab beides ausgegeben, also mit &amp;wert und nur wert aber bei beidem kommt was komplett falsches raus und nicht 1631.</p>
<p>(Das Spiel wurde in der Zwischenzeit nicht neu gestartet also die Addresse sollte noch stimmen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798693</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 17:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 17:41:50 GMT]]></title><description><![CDATA[<p>Hum, sollte eigentlich gehen. Dann probier es mal so:</p>
<pre><code class="language-cpp">unsigned int wert(0);
unsigned int adress(0x05BDBE35);
::ReadProcessMemory(process,
                    reinterpret_cast&lt;void *&gt; (adress), // Erwartet nämlich einen Zeiger auf void
                    &amp;wert,
                    sizeof(wert),
                    NULL);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798696</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 17:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:01:54 GMT]]></title><description><![CDATA[<p>hm... will immernoch nicht so richtig, gibt nun 0 aus.</p>
<p>Die Variable Wert bleibt irgendwie immer gleich verändere ich hier</p>
<pre><code class="language-cpp">unsigned int wert(0);
</code></pre>
<p>auf</p>
<pre><code class="language-cpp">unsigned int wert(5);
</code></pre>
<p>wird auch 5 ausgegeben also irgendwie wird der Variable nicht der Wert zugeschrieben den sie bekommen sollte (in meinem Fall 1631)</p>
<p>hier mal der komplette code falls es von belangen sein sollte:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;windows.h&gt;

using namespace std;

int main(int argc, char *argv[])
{

     HWND Diablo = FindWindow(&quot;Diablo II&quot;, NULL);

::DWORD process_ID;
::DWORD thread_ID = ::GetWindowThreadProcessId (Diablo, &amp;process_ID);
::HANDLE process = ::OpenProcess (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF, FALSE, process_ID);	

unsigned int wert(0);
unsigned int adress(0x05BDBE35);
::ReadProcessMemory(process,
                    reinterpret_cast&lt;void *&gt; (adress),
                    &amp;wert,
                    sizeof(wert),
                    NULL);
    if (Diablo){

cout&lt;&lt;&quot;&amp;wert&quot;&lt;&lt;endl;
cout&lt;&lt;&amp;wert&lt;&lt;endl;
cout&lt;&lt;endl;
cout&lt;&lt;&quot;wert&quot;&lt;&lt;endl;
cout&lt;&lt;wert&lt;&lt;endl;
}
else if(!Diablo)
{
    cout&lt;&lt;&quot;Spiel nicht aktiv&quot;&lt;&lt;endl;
}

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>edit: wenn ich einen Wert aus Minesweeper auslesen lassen will klappt das komischerweise <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> (eben pobiert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798699</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:18:03 GMT]]></title><description><![CDATA[<p>Wieso eigentlich dauernd diese führenden Scope-Operatoren? <code>::DWORD</code> bringt hier nichts, <code>DWORD</code> tuts genauso. Den globalen Namensraum spezifiziert man eigentlich nur explizit, wenn im aktuellen Namensraum ein gleicher Bezeichner auftritt, oder wenn zumindest ein Verdacht auf Namenskonflikte vorliegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798716</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:18:03 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:23:48 GMT]]></title><description><![CDATA[<p>Du kannst prüfen ob es irgendwo gecrasht ist:</p>
<pre><code class="language-cpp">if(ReadProcessMemory(...))
     std::cout&lt;&lt;&quot;Success: &quot;;
else
     GetLastError();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798723</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:38:01 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Du kannst prüfen ob es irgendwo gecrasht ist:</p>
<pre><code class="language-cpp">if(ReadProcessMemory(...))
     std::cout&lt;&lt;&quot;Success: &quot;;
else
     GetLastError();
</code></pre>
</blockquote>
<p>Danke</p>
<p>also es wird aufjedenfall der Teil der Else schleife wiedergeben, nur hab kapier ich das GetLastError(); nicht so ganz ,dass zeigt ja so wie s dasteht nichts an oder?</p>
<p>habs umgeschrieben in cout&lt;&lt;GetLastError(); dann gibt es mir den Wert 6 aus.</p>
<p>6 laut <a href="http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx</a> bedeutet ungültiges Handle <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f636.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_without_mouth"
      title=":X"
      alt="😶"
    /></p>
<p>nur inwiefern soll das Window Handle ungültig sein? Es wird aufjedenfall ein Handle gesetzt denn ich kann mir eines ausgeben lassen mit cout&lt;&lt;Diablo&lt;&lt;endl;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798735</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:37:57 GMT]]></title><description><![CDATA[<p>Hehe... dann mach mal:</p>
<pre><code class="language-cpp">SetLastError(GetLastError);
</code></pre>
<p>Ansonsten lies mal die MSDN.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798737</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Addresswerte aus anderen Prozessen auslesen und verwenden on Mon, 26 Oct 2009 18:46:06 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Hehe... dann mach mal:</p>
<pre><code class="language-cpp">SetLastError(GetLastError);
</code></pre>
<p>Ansonsten lies mal die MSDN.</p>
</blockquote>
<p>Ja was der Fehlercode 6 bedeutet habe ich nun aus der MSDN schon rausgelesen <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="🙂"
    /> (habs oben editiert)</p>
<p>Ist denn mein Weg an das HWND zu kommen falsch oder wie kann es sein ,dass das handle als &quot;Falsch&quot; angesehen wird?</p>
<pre><code class="language-cpp">HWND Diablo = FindWindow(&quot;Diablo II&quot;, NULL);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798743</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Mon, 26 Oct 2009 18:46:06 GMT</pubDate></item></channel></rss>