<?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[DLL- plus Code-Injection Fehler]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mein Programm hat eine DLL mit einer exportierten Funktion, die es in andere Programme injected, da die Funktion in der DLL nicht von außen auf einen Prozess losgelassen werden kann. Das Injecten der DLL per CreateRemoteThread funktioniert soweit wunderbar, war auch nichts neues. Nur der Code-Injection Teil bereitet mir jetzt seit einigen Tagen Kopfschmerzen. Die Funktion in der DLL muss vom Loaderprogramm aus mit einem Parameter gefüttert werden, der alle Informationen, die für die Funktion wichtig sind, bereithält.</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec(dllexport) __stdcall void searchSigs(remoteinfo cRemoteInfo);
</code></pre>
<p>Die Funktion meiner DLL rufe ich auch wieder per CreateRemoteThread im anderen Programm auf. Das funktioniert soweit auch noch. Wenn die Funktion nun aber auf die Werte aus dem Parameter zugreifen möchte, stürzt das Opferprogramm ab. Ich nehme an, dass irgendwas beim Schreiben in den anderen Prozess schief geht. Dabei wird eine Variable vom Typ remoteinfo im Hauptprogramm erzeugt und dann in das Opferprogramm geschrieben.</p>
<pre><code class="language-cpp">class remoteinfo
{
public:
	remoteinfo(bool nstopfound, vector&lt;sig&gt; nSig, vector&lt;modules&gt; nModule);
	bool stopfound;
	vector&lt;sig&gt; vSig; //andere Klasse, sollte aber nicht wichtig für das Problem sein
	vector&lt;modules&gt; vModule; //andere Klasse, sollte aber nicht wichtig für das Problem sein
};
</code></pre>
<p>Wenn ich nach dem Codeinjecten die Speicherstellen von Hauptprogramm und Opferprogramm vergleiche, dann stimmen sie überein. Beim Injecten scheint also kein Fehler aufgetreten zu sein und trotzdem muss an dieser Stelle der Fehler liegen. Gibt es noch andere Möglichkeiten zu überprüfen, ob meine Variable korrekt in den anderen Prozess geschrieben wurde? Oder gibt es noch andere Stellen an denen ich nach Fehlern suchen kann?</p>
<p>Edit: ich habe die Funktion in der DLL jetzt mal durch ein Messagebox ersetzt, die mir die Speicheradresse der übergebenen Variablen ausgibt. Außerdem habe ich noch den Funktionsaufruf dahingehend verändert, dass jetzt ein Pointer erwartet wird. Das wird in dem Fall doch auch von CreateRemoteThread übergeben. (oder?) Die DLL gibt mir nun 0xADFFBC aus. Wenn ich aber in meiner Hauptprogramm nachschaue, welchen Speicherbereich VirtualAllocEx reserviert hat, dann ist das 0xAE0000. Was passt da nicht?!</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239194/dll-plus-code-injection-fehler</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Apr 2026 14:31:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239194.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Apr 2009 14:43:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Mon, 20 Apr 2009 15:02:17 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>mein Programm hat eine DLL mit einer exportierten Funktion, die es in andere Programme injected, da die Funktion in der DLL nicht von außen auf einen Prozess losgelassen werden kann. Das Injecten der DLL per CreateRemoteThread funktioniert soweit wunderbar, war auch nichts neues. Nur der Code-Injection Teil bereitet mir jetzt seit einigen Tagen Kopfschmerzen. Die Funktion in der DLL muss vom Loaderprogramm aus mit einem Parameter gefüttert werden, der alle Informationen, die für die Funktion wichtig sind, bereithält.</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec(dllexport) __stdcall void searchSigs(remoteinfo cRemoteInfo);
</code></pre>
<p>Die Funktion meiner DLL rufe ich auch wieder per CreateRemoteThread im anderen Programm auf. Das funktioniert soweit auch noch. Wenn die Funktion nun aber auf die Werte aus dem Parameter zugreifen möchte, stürzt das Opferprogramm ab. Ich nehme an, dass irgendwas beim Schreiben in den anderen Prozess schief geht. Dabei wird eine Variable vom Typ remoteinfo im Hauptprogramm erzeugt und dann in das Opferprogramm geschrieben.</p>
<pre><code class="language-cpp">class remoteinfo
{
public:
	remoteinfo(bool nstopfound, vector&lt;sig&gt; nSig, vector&lt;modules&gt; nModule);
	bool stopfound;
	vector&lt;sig&gt; vSig; //andere Klasse, sollte aber nicht wichtig für das Problem sein
	vector&lt;modules&gt; vModule; //andere Klasse, sollte aber nicht wichtig für das Problem sein
};
</code></pre>
<p>Wenn ich nach dem Codeinjecten die Speicherstellen von Hauptprogramm und Opferprogramm vergleiche, dann stimmen sie überein. Beim Injecten scheint also kein Fehler aufgetreten zu sein und trotzdem muss an dieser Stelle der Fehler liegen. Gibt es noch andere Möglichkeiten zu überprüfen, ob meine Variable korrekt in den anderen Prozess geschrieben wurde? Oder gibt es noch andere Stellen an denen ich nach Fehlern suchen kann?</p>
<p>Edit: ich habe die Funktion in der DLL jetzt mal durch ein Messagebox ersetzt, die mir die Speicheradresse der übergebenen Variablen ausgibt. Außerdem habe ich noch den Funktionsaufruf dahingehend verändert, dass jetzt ein Pointer erwartet wird. Das wird in dem Fall doch auch von CreateRemoteThread übergeben. (oder?) Die DLL gibt mir nun 0xADFFBC aus. Wenn ich aber in meiner Hauptprogramm nachschaue, welchen Speicherbereich VirtualAllocEx reserviert hat, dann ist das 0xAE0000. Was passt da nicht?!</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1698697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1698697</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Mon, 20 Apr 2009 15:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 09:59:46 GMT]]></title><description><![CDATA[<p>Du kannst unmöglich STL Objekte in den anderen Prozess übertragen. Wer allokierte die den?<br />
Du musst PODs verwenden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699047</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 21 Apr 2009 09:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 10:24:03 GMT]]></title><description><![CDATA[<p>Vectoren können also nicht übergeben werden? Könnte ich aber eine extra Funktion machen, der ich jeweils ein Object übergebe und die mir dann in der anderen Anwendung einen Vector o.ä. füllt? Oder wie bekomme ich meine Vectoren sonst noch in den anderen Speicherbereich?</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699051</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Tue, 21 Apr 2009 10:24:03 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 11:13:00 GMT]]></title><description><![CDATA[<p>Gar nicht als vector.<br />
Mach Dir doch mal klar, dass dies abhängig wäre von dem Memory Manager.<br />
Übertrage als POD!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699071</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 21 Apr 2009 11:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 11:20:18 GMT]]></title><description><![CDATA[<p>aber wie soll ich ein einzelnen Element übertragen, wenn die Funktion in der DLL aber mehrere braucht?</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699078</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Tue, 21 Apr 2009 11:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 12:29:49 GMT]]></title><description><![CDATA[<p>Das habe ich bereits mehrfach geschrieben: Als POD! Einfach als Speicherblock, den Du allokierst und in den Du die entsprechende Strzuktur überträgst.</p>
<p>Mach Dir doch mal bitte klar, dass Du Prozessübergreifend eben nicht new/malloc verwenden kannst. Das benötigen aber STL Container! Du musst auf Strukturen zurückgreifen, die ohne Pointer und extra Allokation auskommen.</p>
<p>PS: Ich habe sowieso schon den Fehler gemacht mich an solch einen Injection-Thread zu beteiligen, was ich sonst tunlichst meide. Mein Fehler, und Tschüss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699120</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 21 Apr 2009 12:29:49 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Tue, 21 Apr 2009 16:56:46 GMT]]></title><description><![CDATA[<p>warum so voreingenommen gegenüber Injection? Muss ja nicht automatisch immer zum Negativen benutzt werden...</p>
<p>Danke trotzdem für den Denkanstoß, funktioniert jetzt alles richtig.</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699287</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Tue, 21 Apr 2009 16:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to DLL- plus Code-Injection Fehler on Wed, 22 Apr 2009 06:27:45 GMT]]></title><description><![CDATA[<p>KN4CK3R schrieb:</p>
<blockquote>
<p>warum so voreingenommen gegenüber Injection? Muss ja nicht automatisch immer zum Negativen benutzt werden...</p>
</blockquote>
<p>Word. Ich zB. erstelle mit dieser Technik gerade ein umfangreiches serverseitiges AntiCheat-Tool für einen Gameserver.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1699501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1699501</guid><dc:creator><![CDATA[Clash]]></dc:creator><pubDate>Wed, 22 Apr 2009 06:27:45 GMT</pubDate></item></channel></rss>