<?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[HMODULE herausfinden?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein ziemlich verzwicktes Problem. Ich patche eine Funktione der User32.dll, indem ich die ersten fünf Bytes mit einem Call auf meine Funktion überschreibe. Das heißt jedes mal wenn ein Prozess die Funktion aufruft, wird erst zuerst meine Funktion aufgerufen, ich kann dann mein Zeug erledigen und dann wird erst die Originalfunktion ausgeführt.<br />
Zu meinem Problem: Bisher kann ich über &quot;GetCurrentProcess();&quot; immer nur den Prozess identifizieren in dem ich mich befinde, ich würde aber auch gerne herausbekommen ob mich eine Dll des Prozesses aufgerufen hat.<br />
Ich habe eine Funktion mit der man mit einem Pointer auf eine Funktion das Modul in der diese Funktion steht herausfinden kann, aber nicht die Dll die einen aufgerufen hat.<br />
Wisst ihr wie ich das anstellen könnte?</p>
<pre><code class="language-cpp">// Returns the HMODULE that contains the specified memory address
static HMODULE ModuleFromAddress(PVOID pv) 
{
	MEMORY_BASIC_INFORMATION mbi;

	return ((::VirtualQuery(pv, &amp;mbi, sizeof(mbi)) != 0) 
	        ? (HMODULE) mbi.AllocationBase : NULL);
}
</code></pre>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136493/hmodule-herausfinden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 11:47:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136493.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Feb 2006 17:08:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 17:08:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein ziemlich verzwicktes Problem. Ich patche eine Funktione der User32.dll, indem ich die ersten fünf Bytes mit einem Call auf meine Funktion überschreibe. Das heißt jedes mal wenn ein Prozess die Funktion aufruft, wird erst zuerst meine Funktion aufgerufen, ich kann dann mein Zeug erledigen und dann wird erst die Originalfunktion ausgeführt.<br />
Zu meinem Problem: Bisher kann ich über &quot;GetCurrentProcess();&quot; immer nur den Prozess identifizieren in dem ich mich befinde, ich würde aber auch gerne herausbekommen ob mich eine Dll des Prozesses aufgerufen hat.<br />
Ich habe eine Funktion mit der man mit einem Pointer auf eine Funktion das Modul in der diese Funktion steht herausfinden kann, aber nicht die Dll die einen aufgerufen hat.<br />
Wisst ihr wie ich das anstellen könnte?</p>
<pre><code class="language-cpp">// Returns the HMODULE that contains the specified memory address
static HMODULE ModuleFromAddress(PVOID pv) 
{
	MEMORY_BASIC_INFORMATION mbi;

	return ((::VirtualQuery(pv, &amp;mbi, sizeof(mbi)) != 0) 
	        ? (HMODULE) mbi.AllocationBase : NULL);
}
</code></pre>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/991072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991072</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Fri, 10 Feb 2006 17:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 19:49:09 GMT]]></title><description><![CDATA[<p>Wenn Du das HMODULE hast, kannst Du einfach GetModuleName mit diesem Handle aufrufen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/991166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991166</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 10 Feb 2006 19:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 20:04:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja ja, das ist mir natürlich schon klar. Ich bekomme aber so nicht das richtige<br />
Handle! Nur z.B. auf die User32.dll oder auf mein eigenen Prozess, aber kein Handle<br />
auf das mich aufrufende Modul!</p>
<p>gruß<br />
yogle</p>
<p>edit: hab mir mal madCodeHook angeschaut. Da gibt es genau so eine Funktion die ich<br />
benötige, nämlich &quot;GetCallingModule&quot;, mit dem funzt einwandfrei. Er macht das<br />
irgendwie auch über &quot;VirtualQuery&quot; aber im Assemblercode lesen bin ich nicht<br />
so gut! <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/991177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991177</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Fri, 10 Feb 2006 20:04:40 GMT</pubDate></item><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 20:04:59 GMT]]></title><description><![CDATA[<p>Bist Du Dir sicher, dass der Pointer wirklich auf die Funktion zeigt!? Zeig doch mal wie Du auf diesen Pointer kommst! Das ist nämlich das komplizierte dran (und wird IMHO nicht immer lösbar sein).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/991181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991181</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 10 Feb 2006 20:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 20:21:32 GMT]]></title><description><![CDATA[<p>Genau das ist nämlich das Problem <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="🙂"
    /><br />
Ich weiß nicht wie ich auf den Pointer kommen soll! Ich hab keine Ahnung.<br />
Irgendjemand meinte mal was von der Funktion &quot;StackWalk&quot; aber da blick ich nicht<br />
durch. Wie schon gesagt madCodeHook hats irgendwie über &quot;VirtualQuery&quot; hinbekommen.<br />
Aber ist nicht so schlimm wenn ich nicht selber hinbekomme, dann unterstütze ich<br />
madCodeHook halt ein bisschen. <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="🙂"
    /> Würde mich halt nur interessieren.</p>
<p>Gruß<br />
yogle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/991196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991196</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Fri, 10 Feb 2006 20:21:32 GMT</pubDate></item><item><title><![CDATA[Reply to HMODULE herausfinden? on Fri, 10 Feb 2006 21:04:10 GMT]]></title><description><![CDATA[<p>Ganz grob gesagt: Es gibt keine Performante Lösung, wie man auf die Adresse des Aufrufen den kommt. Das einfachste wäre noch Assembler, dann ist es aber nicht mehr portabel.<br />
Du kannst natürlich auch StackWalk64 verwenden, dies ist aber nicht performant:<br />
<a href="http://www.codeproject.com/threads/StackWalker.asp" rel="nofollow">http://www.codeproject.com/threads/StackWalker.asp</a></p>
<p>Du kannst auch folgendes machen:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;tchar.h&gt;

void __stdcall MyRealFunc(LPCVOID pCallerAddr)
{
  MEMORY_BASIC_INFORMATION mbi;
  _tprintf(_T(&quot;Called from 0x%p\n&quot;), pCallerAddr);
  if (VirtualQuery(pCallerAddr, &amp;mbi, sizeof(mbi)) != 0)
  {
    _tprintf(_T(&quot;Module-Base 0x%p\n&quot;), mbi.AllocationBase);
    TCHAR szMod[_MAX_PATH];
    if (GetModuleFileName((HMODULE) mbi.AllocationBase, szMod, _MAX_PATH) != 0)
      _tprintf(_T(&quot;Module: %s\n&quot;), szMod);
  }
}

__declspec(naked) void MyFunc()
{
  __asm push ebp  
  __asm mov  ebp,esp 
  __asm mov  eax, [esp+4]
  __asm push eax
  __asm call MyRealFunc
  __asm mov  esp,ebp
  __asm pop  ebp  
  __asm xor  eax,eax
  __asm ret
}

int _tmain()
{
  MyFunc();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/991213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/991213</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 10 Feb 2006 21:04:10 GMT</pubDate></item></channel></rss>