<?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[WriteProcessMemory - Importabschnitt eines Modules ändern]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte Funktionsaufrufe eines anderen Prozesses hooken. Dazu injiziere ich eine Dll-Datei mittels Windows-Hook in einen anderen Prozess. In dieser Dll durchsuche ich alle Module nach der Funktion und ändere deren Sprungadresse auf meine eigene Funktion. Dies tue ich mit WriteProcessMemory().<br />
Dabei halte ich mich an Jeffrey Richters Buch &quot;MS Windows Programmierung für Experten&quot; und dem Kapitel &quot;Api-Hooking&quot;.<br />
Richter demonstriert seinen Code am Beispiel Notepads. Wird hier eine Messagebox ausgegeben, fängt dies das Programm ab. Das funktioniert auch bei mir.<br />
Komischerweise funktioniert das nicht bei dem simpelsten MessageBox-programm, das ich selbst programmiert habe (einfaches Fenster, das bei irgendeiner aktion ne message-box ausgibt). Dies liegt daran, dass WriteProcessMemory() beim überschreiben von dll-modulen erfolgreich ist, aber wenn der Prozess als Modul selbst - also das modul xxx.exe - überschrieben werden soll, wird zwar der Importabschnitt gefunden, aber WriteProcessMemory() schlägt wegen Zugriffsverletzung (Fehler 998) fehl.<br />
Gäbe es eine Möglichkeit, mit memcpy() das zu tun? Funktioniert bei euch der Richter mit anderen Prozessen? thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/122437/writeprocessmemory-importabschnitt-eines-modules-ändern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jul 2026 06:12:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/122437.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Oct 2005 16:50:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WriteProcessMemory - Importabschnitt eines Modules ändern on Wed, 05 Oct 2005 16:50:36 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte Funktionsaufrufe eines anderen Prozesses hooken. Dazu injiziere ich eine Dll-Datei mittels Windows-Hook in einen anderen Prozess. In dieser Dll durchsuche ich alle Module nach der Funktion und ändere deren Sprungadresse auf meine eigene Funktion. Dies tue ich mit WriteProcessMemory().<br />
Dabei halte ich mich an Jeffrey Richters Buch &quot;MS Windows Programmierung für Experten&quot; und dem Kapitel &quot;Api-Hooking&quot;.<br />
Richter demonstriert seinen Code am Beispiel Notepads. Wird hier eine Messagebox ausgegeben, fängt dies das Programm ab. Das funktioniert auch bei mir.<br />
Komischerweise funktioniert das nicht bei dem simpelsten MessageBox-programm, das ich selbst programmiert habe (einfaches Fenster, das bei irgendeiner aktion ne message-box ausgibt). Dies liegt daran, dass WriteProcessMemory() beim überschreiben von dll-modulen erfolgreich ist, aber wenn der Prozess als Modul selbst - also das modul xxx.exe - überschrieben werden soll, wird zwar der Importabschnitt gefunden, aber WriteProcessMemory() schlägt wegen Zugriffsverletzung (Fehler 998) fehl.<br />
Gäbe es eine Möglichkeit, mit memcpy() das zu tun? Funktioniert bei euch der Richter mit anderen Prozessen? thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/885856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/885856</guid><dc:creator><![CDATA[Black Shadow]]></dc:creator><pubDate>Wed, 05 Oct 2005 16:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to WriteProcessMemory - Importabschnitt eines Modules ändern on Wed, 05 Oct 2005 17:51:11 GMT]]></title><description><![CDATA[<p>wo writeprocessmem. nicht funzt da geht memcpy erst recht nicht. wenn der zugriff fehlschlegt dann liegt das wahrscheinlich daran, dass code pages read-only sind. die musste erstmal schreibfähig machen. guckst du: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/virtualprotectex.asp" rel="nofollow">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/virtualprotectex.asp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/885908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/885908</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 05 Oct 2005 17:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to WriteProcessMemory - Importabschnitt eines Modules ändern on Wed, 05 Oct 2005 19:33:04 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Hey vielen vielen Dank, es funktioniert nun <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>Edit: soll ich nach dem Schreibvorgang die codepage wieder auf readonly setzen oder ist das egal?</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/886007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/886007</guid><dc:creator><![CDATA[Black Shadow]]></dc:creator><pubDate>Wed, 05 Oct 2005 19:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to WriteProcessMemory - Importabschnitt eines Modules ändern on Wed, 05 Oct 2005 20:56:16 GMT]]></title><description><![CDATA[<p>Dies solltest du der Richtigkeit halber tun wobei es wie du ja selbst sagtest auch so funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/886059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/886059</guid><dc:creator><![CDATA[Konzeptor]]></dc:creator><pubDate>Wed, 05 Oct 2005 20:56:16 GMT</pubDate></item></channel></rss>