<?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[Programm &amp;quot;pausieren&amp;quot;?]]></title><description><![CDATA[<p>Ich habe ein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ich habe ein funktionierendes Programm<br />
geschrieben, dass in andere Prozesse Code einfügt<br />
(den Speicher manipuliert)</p>
<p>Nun zu meinem Problem:<br />
Wenn ich in das Programm schreibe, und es im gleichen Moment<br />
bei sich selbst genau diese speicher-Adresse liest,<br />
kommt es zu einem sehr, sehr unschönen Fehler, der zu einem<br />
Total-Absturz des Programms führt (und auch meiner .dll die<br />
in dem Programm geladen ist)</p>
<p>Die passiert zu 50% der Versuche <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="😕"
    /> <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>
<p>Gibt es eine Möglichkeit den Prozess zu pausieren,<br />
obwohl mein Programm selbst ein Teil von dem Prozess ist<br />
(eine .dll Datei)</p>
<p>Oder eine andere Lösung?</p>
<p>Grüße <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/160968/programm-quot-pausieren-quot</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 12:42:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160968.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Oct 2006 20:10:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sun, 01 Oct 2006 20:10:18 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ich habe ein funktionierendes Programm<br />
geschrieben, dass in andere Prozesse Code einfügt<br />
(den Speicher manipuliert)</p>
<p>Nun zu meinem Problem:<br />
Wenn ich in das Programm schreibe, und es im gleichen Moment<br />
bei sich selbst genau diese speicher-Adresse liest,<br />
kommt es zu einem sehr, sehr unschönen Fehler, der zu einem<br />
Total-Absturz des Programms führt (und auch meiner .dll die<br />
in dem Programm geladen ist)</p>
<p>Die passiert zu 50% der Versuche <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="😕"
    /> <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>
<p>Gibt es eine Möglichkeit den Prozess zu pausieren,<br />
obwohl mein Programm selbst ein Teil von dem Prozess ist<br />
(eine .dll Datei)</p>
<p>Oder eine andere Lösung?</p>
<p>Grüße <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1147626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147626</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Sun, 01 Oct 2006 20:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sun, 01 Oct 2006 22:12:45 GMT]]></title><description><![CDATA[<p>Ich rate jetzt mal einfach dass du nen RemoteThread in der fremden Anwendung erstellst und diesem die Adresse von LoadLibrary als Thread Startroutine zuweist.<br />
Dann wäre es ne Möglichkeit in der DllMain deiner Dll,wo du ja wahrscheinlich auch deine &quot;Schreibarbeiten&quot; durchführst,den Hauptthread der Anwendung mit SuspendThread kalt zustellen und am Schluss wieder mit ResumeThread aufzuwecken.<br />
Da LoadLibrary ja deine Thread Startroutine ist und LoadLibrary erst nach ausführung der DllMain zurückkehrt sollte das eigentlich funktionieren.<br />
Das Ganze ist zwar enorm schmutzig,aber das ist der Rest deines Vorhabens ja auch.</p>
<p>Gruss Spacelord</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147670</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sun, 01 Oct 2006 22:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sun, 01 Oct 2006 22:30:33 GMT]]></title><description><![CDATA[<p>Spacelord schrieb:</p>
<blockquote>
<p>Ich rate jetzt mal einfach dass du nen RemoteThread in der fremden Anwendung erstellst und diesem die Adresse von LoadLibrary als Thread Startroutine zuweist.<br />
Dann wäre es ne Möglichkeit in der DllMain deiner Dll,wo du ja wahrscheinlich auch deine &quot;Schreibarbeiten&quot; durchführst,den Hauptthread der Anwendung mit SuspendThread kalt zustellen und am Schluss wieder mit ResumeThread aufzuwecken.<br />
Da LoadLibrary ja deine Thread Startroutine ist und LoadLibrary erst nach ausführung der DllMain zurückkehrt sollte das eigentlich funktionieren.<br />
Das Ganze ist zwar enorm schmutzig,aber das ist der Rest deines Vorhabens ja auch.</p>
<p>Gruss Spacelord</p>
</blockquote>
<p>Könntest du bitte &quot;schmutzig&quot; für Programme definieren <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>Wenn man in andere Programme schreibt ist das meiner Meinung nach noch<br />
lange nicht &quot;schmutzig&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Wie kriege ich denn meinen Thread, von meiner hwnd abgeleitet,<br />
weiss jetzt nicht so recht wie ich da dran kommen soll, weil es ist ja<br />
SuspendThread(Thread);<br />
und ich hab bis jetzt nur die hwin mit FindWindow herrausgefunden.</p>
<p>Aber schonmal Danke für den Ansatz <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1147672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147672</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Sun, 01 Oct 2006 22:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sun, 01 Oct 2006 23:05:59 GMT]]></title><description><![CDATA[<p>Naja,es ist etwas schwer nen Tip zu geben wenn man nur raten kann wie denn wohl dein Code aussieht.<br />
Ich hab z.B. keinen Schimmer wie nen HWND da ins Bild passt.<br />
Naja,die regulären Threads des fremden Prozesses kannst du z.B. finden indem du mit CreateToolhelp32Snapshot nen Snapshot erstellst und mit Thread32First/Next alle Threads durchläufst und in der THREADENTRY32 Struktur th32OwnerProcessID mit der ID des fremden Prozesses <a href="http://vergleichst.An" rel="nofollow">vergleichst.An</a> das benötigte Handle kommst du dann mit OpenThread(entsprechende Rechte vorausgesetzt).</p>
<p>PS:Im Adressraum fremder Prozesse rumzupfuschen ist definitiv dreckig.<br />
Später schimpfen dann wieder die User auf Windows weil deine Anwendung irgendwelche Programme zum Absturz bringt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1147676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147676</guid><dc:creator><![CDATA[Spacelord]]></dc:creator><pubDate>Sun, 01 Oct 2006 23:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 12:34:17 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" 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/1147957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1147957</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 02 Oct 2006 12:34:17 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 17:42:56 GMT]]></title><description><![CDATA[<p>Leute ich glaub ihr müsst mir da nochmal weiterhelfen <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>
<p>Hier sind meine mehr oder weniger verzweifelten Versuche <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>Versuch 1</p>
<pre><code class="language-cpp">void pauseme()
{
    HWND hwar3=FindWindow(NULL,&quot;Notepad&quot;);
    EnableDebugPriv();
    DWORD PID,TID;
    TID = GetWindowThreadProcessId (hwar3, &amp;PID);
    //Open process
    HANDLE hProcess=OpenProcess( PROCESS_ALL_ACCESS,FALSE,PID);
    if(!hProcess)
        exit(0);
    SuspendThread(hProcess);
}
</code></pre>
<p>Versuch mit einer Anderen Methode</p>
<pre><code class="language-cpp">void pauseme()
{
    HWND hwar3=FindWindow(NULL,&quot;Notepad&quot;);
        HANDLE hcurrent=GetCurrentProcess();
        DWORD PID, TID;
        TID = ::GetWindowThreadProcessId (hwar3, &amp;PID);
        HANDLE hopen=OpenProcess(       PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|
         PROCESS_VM_WRITE,FALSE,PID);
     SuspendThread(hopen); // Habs hier auch mit hcurrent versucht geht auch nicht
}
</code></pre>
<p>Hoffentlich findet ihr raus woran das liegt <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="😞"
    /><br />
Er friert den Prozess einfach nicht ein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148153</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Mon, 02 Oct 2006 17:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 17:46:47 GMT]]></title><description><![CDATA[<p>Ein Prozess ist kein Thread! Ein Prozess kann mehrere Threads haben!</p>
<p>Für was benötigst Du solch einen <em>schmutzigen</em> Code? Mit einer DLL die Du in den Prozess injezierst ginge es mit Sicherheit einfacher!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148156</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 02 Oct 2006 17:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 17:49:53 GMT]]></title><description><![CDATA[<p>Thread != Process</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148161</guid><dc:creator><![CDATA[suspend]]></dc:creator><pubDate>Mon, 02 Oct 2006 17:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 17:53:57 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Ein Prozess ist kein Thread! Ein Prozess kann mehrere Threads haben!</p>
<p>Für was benötigst Du solch einen <em>schmutzigen</em> Code? Mit einer DLL die Du in den Prozess injezierst ginge es mit Sicherheit einfacher!</p>
</blockquote>
<p>Das ist lustig, da dieser Code schon von einer dll ausgeführt wird die in den Zielprozess injeziert wurde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":-D"
      alt="😃"
    /><br />
Ich brauche da um ein Programm zu patchen (manipulieren)</p>
<p>Wie kriege ich das denn hin?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148165</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Mon, 02 Oct 2006 17:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 19:53:33 GMT]]></title><description><![CDATA[<p>Wenn die DLL bereits im Kontext des anderen Prozesses ist, was machst Du dann?<br />
Bestehenden Code verändern? In diesem Fall müsstest Du alle Threads, bis auf Deinen anhalten und dann den Code manipulieren. Andernfalls weisst Du nicht ob ein Thread nicht genau Deinen Code ausführen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148359</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 02 Oct 2006 19:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Mon, 02 Oct 2006 22:17:09 GMT]]></title><description><![CDATA[<p>Martin Richter schrieb:</p>
<blockquote>
<p>Wenn die DLL bereits im Kontext des anderen Prozesses ist, was machst Du dann?<br />
Bestehenden Code verändern? In diesem Fall müsstest Du alle Threads, bis auf Deinen anhalten und dann den Code manipulieren. Andernfalls weisst Du nicht ob ein Thread nicht genau Deinen Code ausführen will.</p>
</blockquote>
<p>Hab ich doch alles im erstel Post geschrieben....</p>
<p>Listing schrieb:</p>
<blockquote>
<p>Nun zu meinem Problem:<br />
Wenn ich in das Programm schreibe, und es im gleichen Moment<br />
bei sich selbst genau diese speicher-Adresse liest,<br />
kommt es zu einem sehr, sehr unschönen Fehler, der zu einem<br />
Total-Absturz des Programms führt (und auch meiner .dll die<br />
in dem Programm geladen ist)</p>
<p>Die passiert zu 50% der Versuche <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="😕"
    /> <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>
<p>Gibt es eine Möglichkeit den Prozess zu pausieren,<br />
obwohl mein Programm selbst ein Teil von dem Prozess ist<br />
(eine .dll Datei)</p>
<p>Oder eine andere Lösung?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1148412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148412</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Mon, 02 Oct 2006 22:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Tue, 03 Oct 2006 18:01:50 GMT]]></title><description><![CDATA[<p>Hat hier denn niemand ein &quot;handfestes&quot; Bespiel wie ich<br />
an den richtigen handle komme?</p>
<p>Danke schonmal<br />
: - )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148812</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Tue, 03 Oct 2006 18:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Tue, 03 Oct 2006 20:52:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">HANDLE			hProcess				= NULL;
	HANDLE			hThreadSnapshot			= NULL;
	HANDLE			hThread[MAX_THREADS];
	DWORD			dwThreadID[MAX_THREADS];
    DWORD			dwProcessId				= 0;
	DWORD			dwThreadId				= 0;
	INT				iThreadCounter			= 1;

    hProcess	= GetCurrentProcess();
	hThread[0]	= GetCurrentThread();
	dwProcessId	= GetCurrentProcessId();
	dwThreadId	= GetCurrentThreadId();

	// Alle Threads dieses Prozesses mit Ausnahme diesem anhalten
	hThreadSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
	if( hThreadSnapshot == INVALID_HANDLE_VALUE )
	{
		return;
	}
	if( Thread32First( hThreadSnapshot,&amp;th32 )) 
    { 
		do
        { 
			// Nur der eigene Prozess
			if( th32.th32OwnerProcessID == dwProcessId )
			{
				// Nicht der eigene Thread
				if( th32.th32ThreadID != dwThreadId )
				{
					hThread[iThreadCounter] = OpenThread( THREAD_ALL_ACCESS, true, th32.th32ThreadID );
					if( hThread[iThreadCounter] == NULL )
					{
						continue;
					}
					else
					{
						// ThreadID speichern
						dwThreadID[iThreadCounter] = th32.th32ThreadID;

						// Thread anhalten
						if( SuspendThread( hThread[iThreadCounter] ) == (DWORD)-1 )
						{
							CloseHandle( hThread[iThreadCounter] );
							hThread[iThreadCounter] = NULL;
							continue;
						}
						else iThreadCounter++;
					}
				}
			}
		}
		while( Thread32Next( hThreadSnapshot,&amp;th32 )); 
	}
	CloseHandle( hThreadSnapshot );
</code></pre>
<p>So ungefähr halt <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 />
Danach kannste dann alle Threads über</p>
<pre><code class="language-cpp">// Die anderen Threads wieder laufen lassen
for( INT i = 1; i &lt; iThreadCounter; i++ )
{
	ResumeThread( hThread[i] );
}
</code></pre>
<p>laufen lassen</p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148903</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Tue, 03 Oct 2006 20:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Tue, 03 Oct 2006 22:21:52 GMT]]></title><description><![CDATA[<p>yogle schrieb:</p>
<blockquote>
<pre><code class="language-cpp">So ungefähr halt  ;)  
Danach kannste dann alle Threads über 
[cpp]
// Die anderen Threads wieder laufen lassen
for( INT i = 1; i &lt; iThreadCounter; i++ )
{
	ResumeThread( hThread[i] );
}
</code></pre>
<p>laufen lassen</p>
<p>Gruß<br />
yogle</p>
</blockquote>
<p>Wenn das klappt kriegst du ein Kuss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das liebe ich an diesem Forum,<br />
Danke schonmal.</p>
<p>Ich werd mich morgen nochmal genau mit diesem Problem<br />
auseinander setzen und dein Code analysieren<br />
(davon lernen), wenn ich wieder klar im Kopf bin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Vielen Dank an dich,<br />
vorbildlich <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>Jeder vernünftige C++ programmierer sollte dieses<br />
Board in seinen Favoriten haben *schwärm* :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1148939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1148939</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Tue, 03 Oct 2006 22:21:52 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Wed, 04 Oct 2006 07:42:49 GMT]]></title><description><![CDATA[<p>Auch das hat einen Haken! Denn Du weisst nicht wo der Thread Suspended wird. Wen Du nun Code änderst kann es dennoch krachen, da die Stackinfos sich evtl. ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149026</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 04 Oct 2006 07:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Wed, 04 Oct 2006 11:10:49 GMT]]></title><description><![CDATA[<p>yogle schrieb:</p>
<blockquote>
<pre><code class="language-cpp">....
	// Alle Threads dieses Prozesses mit Ausnahme diesem anhalten
	hThreadSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
	if( hThreadSnapshot == INVALID_HANDLE_VALUE )
	{
		return;
	}
	if( Thread32First( hThreadSnapshot,&amp;th32 )) 
        ....
</code></pre>
<p>So ungefähr halt <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 />
Danach kannste dann alle Threads über</p>
<pre><code class="language-cpp">// Die anderen Threads wieder laufen lassen
for( INT i = 1; i &lt; iThreadCounter; i++ )
{
	ResumeThread( hThread[i] );
}
</code></pre>
<p>laufen lassen</p>
<p>Gruß<br />
yogle</p>
</blockquote>
<p>Wie komme ich denn an das &quot;th32&quot;<br />
von</p>
<pre><code class="language-cpp">if( Thread32First( hThreadSnapshot,&amp;th32 ))
</code></pre>
<p>Da taucht diese Variable auf einmal auf, ohne deklariert worden zu sein</p>
<p>Es handelt sich hierbei um:</p>
<pre><code class="language-cpp">lpte
    [out] Pointer to a THREADENTRY32 structure.
</code></pre>
<p>Vielen Dank schonmal <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>Hab mich mal umgesehen, ich denke in deinem Code fehlt das:</p>
<pre><code class="language-cpp">...
    hThreadSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
    if( hThreadSnapshot != INVALID_HANDLE_VALUE )
	{
    return;
	}

	THREADENTRY32 th32;
    th32.dwSize = sizeof(th32);
    if( Thread32First( hThreadSnapshot,&amp;th32 ))
    {
        do
        ....
</code></pre>
<p>Hoffe du kannst das bestätigen <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>// Naja, hab es jetzt mit einem anderen Code hinbekommen,<br />
abern icht zuletzt dank yogle's Hilfe.<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149107</guid><dc:creator><![CDATA[Listing]]></dc:creator><pubDate>Wed, 04 Oct 2006 11:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Wed, 04 Oct 2006 18:23:44 GMT]]></title><description><![CDATA[<p>Sag mal - WAS willst du da eigentlich Programmieren??<br />
Soll das ein Virus werden, ein Programm-Crack oder eine &quot;Extension&quot;?</p>
<p>Aber ich denke es wär das einfachste, wenn du deinen kompletten Code hochlädtst, weil so kann man nur rumstöpseln. So einen dirty code wie du schreibst kann das überall scheppern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1149438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1149438</guid><dc:creator><![CDATA[fehlersucher]]></dc:creator><pubDate>Wed, 04 Oct 2006 18:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sat, 04 Nov 2006 01:08:24 GMT]]></title><description><![CDATA[<p>/*Einen Thread an eine Hostapplikation hängen (PersonalFirewalls austricksen written by hakin9 // HaNoCr)*/</p>
<p>#include &lt;windows.h&gt;<br />
#include &lt;tlhelp32.h&gt;<br />
#include &lt;stdio.h&gt;<br />
BOOL AttachThread();<br />
int main()<br />
{<br />
AttachThread();<br />
}<br />
BOOL AttachThread()<br />
{<br />
HANDLE hProcessSnap;<br />
HANDLE hProcess;<br />
PROCESSENTRY32 pe32;<br />
DWORD dwPriorityClass;<br />
LPVOID RemoteFileName;<br />
TCHAR ModuleFileName[MAX_PATH];<br />
LPTSTR FileName;<br />
HANDLE hRemoteThread;<br />
HINSTANCE RemoteModule;<br />
hProcessSnap = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );<br />
if( hProcessSnap == INVALID_HANDLE_VALUE )<br />
{<br />
return (FALSE);<br />
}<br />
pe32.dwSize = sizeof( PROCESSENTRY32 );<br />
if( !Process32First ( hProcessSnap, &amp;p<br />
e32 ) )<br />
{<br />
CloseHandle( hProcessSnap );<br />
return( FALSE );<br />
}<br />
do<br />
{<br />
if( strcmp(pe32.szExeFile,&quot;iexplorer.exe&quot;) == 0 )<br />
{<br />
hProcess = OpenProcess(<br />
PROCESS_ALL_ACCESS,FALSE,<br />
pe32.th32ProcessID);<br />
if ( hProcess != 0 )<br />
{<br />
RemoteFileName = VirtualAllocEx(<br />
hProcess, NULL, MAX_PATH,<br />
MEM_COMMIT, PAGE_READWRITE);<br />
if( RemoteFileName )<br />
{<br />
ModuleFileName[0] = TEXT('\0');<br />
GetModuleFileName( NULL, ModuleFileName, MAX_PATH);<br />
FileName = &amp;ModuleFileName[lstrlen( ModuleFileName)];<br />
while ( FileName &gt; &amp;ModuleFileName[0] &amp;&amp; FileName[0] != TEXT ('\')<br />
&amp;&amp; FileName[0] != TEXT('/') )<br />
FileName--;<br />
if ( FileName[0] != TEXT('\0') )<br />
FileName++;<br />
lstrcpy( FileName, TEXT(&quot;test.dll&quot;) );<br />
if( WriteProcessMemory(<br />
hProcess, RemoteFileName,<br />
ModuleFileName, MAX_PATH, NULL ) )<br />
{<br />
hRemoteThread = CreateRemoteThread( hProcess,<br />
NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(<br />
GetModuleHandle( TEXT(&quot;kernel32.dll&quot;) ),<br />
#ifdef UNICODE<br />
&quot;LoasLibaryW&quot;),<br />
#else<br />
&quot;LoadLibaryA&quot;),<br />
#endif<br />
RemoteFileName, 0, NULL );<br />
WaitForSingleObject( hRemoteThread, INFINITE );<br />
GetExitCodeThread( hRemoteThread, (LPDWORD) &amp;RemoteModule );<br />
hRemoteThread = CreateRemoteThread( hProcess,<br />
NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(<br />
GetModuleHandle(<br />
TEXT(&quot;kernel32.dll&quot;) ), &quot;FreeLibary&quot;),<br />
RemoteModule, 0, NULL );<br />
VirtualFreeEx( hProcess, RemoteFileName, 0, MEM_RELEASE);<br />
CloseHandle(hRemoteThread);<br />
}<br />
}<br />
}<br />
CloseHandle ( hProcess );<br />
}<br />
} while ( Process32Next ( hProcessSnap, &amp;pe32 ) );</p>
<p>CloseHandle( hProcessSnap );<br />
return( TRUE );<br />
}</p>
<p>Ich bin mir sicher das da noch 1 Fehler drin is, aber ich weis mom nicht mehr wo/wie? Ich hoffe, ich konnte bei deinem Problem behilflich sein.</p>
<p>mfg<br />
HaNoCr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168040</guid><dc:creator><![CDATA[HaNoCr]]></dc:creator><pubDate>Sat, 04 Nov 2006 01:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sat, 04 Nov 2006 01:53:24 GMT]]></title><description><![CDATA[<p>Habe ich das richtig verstanden das er in den Speicher einer anderen Anwendung irgendwas reinschreiben will?<br />
Ist das überhaupt möglich? Ich dachte bisher das der Speicher einer Anwendung vom BS geschützt ist und das dieser Speicherbereich überhaupt nicht von einer anderen Anwendung aus sichtbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168044</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Sat, 04 Nov 2006 01:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sat, 04 Nov 2006 02:28:54 GMT]]></title><description><![CDATA[<p>Wenn du denkst du denkst, denkst du nur du denkst, ... gelle? (sorry <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )</p>
<p>ReadProcessMemory, WriteProcessMemory, gibts alles, braucht man bloss die nötigen Rechte, und weil sowieso fast jeder unter XP als Admin eingeloggt ist tun sich Viren &amp; Trojaner auch so leicht...</p>
<p>Und er schreibt nicht nur in den Speicher der anderen Anwendung, er startet dort auch noch einen eigenen Thread <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>p.S.: das nennt man &quot;application hijacking&quot; und es wird (wie das Kommentar zu beginn des Listings nahelegt) z.B. von Viren verwendet um Firewalls zu umgehen. Einige Firewalls bieten dazu ne eigene Option an die nochmal nachfragt wenn DLLs nachgeladen wurden, bloss führt das beim IE z.B. dazu dass man kaum mehr surfen kann, so oft wie der nachfragt (wegen harmlosen Sachen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168045</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 04 Nov 2006 02:28:54 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sat, 04 Nov 2006 23:30:32 GMT]]></title><description><![CDATA[<p>Bezieht sich das eigentlich auf den Datenspeicher der Anwendung oder auch auf den Codespeicher (also den Speicherbereich der Daten enthält oder auch den der den Code der Anwendung enthält)?</p>
<p>Aber wieso sollte man sowas schreiben (ausser für Viren/Trojaner)? Man weis doch sowieso nicht in welchem Format die Daten vorliegen. Zum Beispiel der notepad könnte die Textdaten in reinem ASCI im Speicher haben, in Binären-Format oder komprimiert. Auch ist unbekannt wann welche Daten anfangen.</p>
<p>Wenn es sich um eigene Anwendungen handelt, dann gibt es weitaus bessere Wege zur Kommunikation / Datenaustausch.</p>
<p>Deswegen habe ich auch nocht nie auch nur daran gedacht, im Speicher einer anderen Anwendung lesen/schreiben zu wollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168602</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Sat, 04 Nov 2006 23:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sat, 04 Nov 2006 23:50:26 GMT]]></title><description><![CDATA[<p>Sehe ich 100% genauso! Außerdem kann man wohl kaum garantieren, dass z.B. die notepad.exe auf den meisten (Windows-) Systemen exakt gleich aufgebaut ist. Möglich wärs sogar, dass die durch ein Windows-Update geändert wird. Jedenfalls bei anderen Programmen können sich die Exe-Dateien schnell durch Patches ändern</p>
<p>Und wenn ich die Zeile <em>HWND hwar3 = ...</em> sehe, frag ich mich, ob Listing vielleicht WarCraft3 verändern will??<br />
Wurde schon mehrfach gesagt, aber das ist echt mehr als schmutzig und dreckig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168607</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 04 Nov 2006 23:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to Programm &amp;quot;pausieren&amp;quot;? on Sun, 05 Nov 2006 00:10:52 GMT]]></title><description><![CDATA[<p>Pfu, keine Ahnung wer sowas einsetzt ausser für Viren/Debugging/Cracks etc. Zum cracken ist es aber sicher gut geeignet, da man dann ja das entsprechende Programm nicht auf der Platte patchen muss sondern bloss im Speicher.</p>
<p>Und ob man mit WriteProcessMemory gerade auf Code-Seiten schreiben kann weiss ich nicht, denke aber schon, bloss dass die halt u.U. schreibgeschützt sind, aber dafür gibts dann ja wieder VirtualProtect(Ex).</p>
<p>An ein Programm welches sowas in der Art macht erinnere ich mich jetzt: Style XP. Das patcht in memory eine DLL um den Signatur check für die visual styles von XP auszuhebeln, damit man andere visual styles verwenden kann als die 3 von MS mitgelieferten. Ob das jetzt &quot;böse&quot; und &quot;schmutzig&quot; ist sei dahingestellt, es funktioniert auf jeden Fall <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>Und eine eigene DLL in jeden Prozess reinladen zu lassen (in der Registry gibts irgendwo so nen schönen Key wo man das eintragen kann) halte ich auch nicht für wesentlich sauberer.</p>
<p>----</p>
<p>Ich will auch garnicht behaupten ich hätte das selbst schonmal irgendwo gebraucht/verwendet, ich weiss bloss dass es die entsprechenden Funktionen gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168613</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 05 Nov 2006 00:10:52 GMT</pubDate></item></channel></rss>