<?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[Einige API Funktionen umschreiben]]></title><description><![CDATA[<p>Ich wollte fragen ob man sich die API Funktion VirtualProtect selbst schreiben kann? Es geht nur darum die Schreib Rechte im eigenen Prozess zu ändern.Was ich damit vorhabe? Funktionen zu verändern per asm oder C++. Dies funktioniert nur wenn man genügend Rechte hat eine Funktion umzuschreiben.<br />
Das geht nicht:</p>
<pre><code class="language-cpp">unsigned char *pFunc=(unsigned char*)&amp;MyFunction;
unsigned char NewByte=0xE9;
_asm
{
 mov eax,pFunc
 mov al,[NewByte]
 mov [ebx],al
}
</code></pre>
<p>Da kommt nur ne Access Violation raus, dies hingegen klappt:</p>
<pre><code class="language-cpp">unsigned char *addr=(unsigned char*)&amp;OrginalFunktion;
unsigned char NewByte=0xE9;
DWORD oldpro;
VirtualProtect(reinterpret_cast&lt;void*&gt;(&amp;OrginalFunktion),1000,PAGE_EXECUTE_READWRITE,&amp;oldpro);
	_asm
	{
		mov ebx,addr
		mov al,[NewByte]
		mov [ebx],al

	}
VirtualProtect(reinterpret_cast&lt;void*&gt;(&amp;OrginalFunktion),1000,oldpro,0);
</code></pre>
<p>Und es geht darum ob man mithilfe von assembler/C++ diese Funktion selbst schreiben kann oder den PM (Protection Mode) kurz ausschalten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302275/einige-api-funktionen-umschreiben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 09:22:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302275.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Apr 2012 09:28:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einige API Funktionen umschreiben on Sun, 15 Apr 2012 09:28:27 GMT]]></title><description><![CDATA[<p>Ich wollte fragen ob man sich die API Funktion VirtualProtect selbst schreiben kann? Es geht nur darum die Schreib Rechte im eigenen Prozess zu ändern.Was ich damit vorhabe? Funktionen zu verändern per asm oder C++. Dies funktioniert nur wenn man genügend Rechte hat eine Funktion umzuschreiben.<br />
Das geht nicht:</p>
<pre><code class="language-cpp">unsigned char *pFunc=(unsigned char*)&amp;MyFunction;
unsigned char NewByte=0xE9;
_asm
{
 mov eax,pFunc
 mov al,[NewByte]
 mov [ebx],al
}
</code></pre>
<p>Da kommt nur ne Access Violation raus, dies hingegen klappt:</p>
<pre><code class="language-cpp">unsigned char *addr=(unsigned char*)&amp;OrginalFunktion;
unsigned char NewByte=0xE9;
DWORD oldpro;
VirtualProtect(reinterpret_cast&lt;void*&gt;(&amp;OrginalFunktion),1000,PAGE_EXECUTE_READWRITE,&amp;oldpro);
	_asm
	{
		mov ebx,addr
		mov al,[NewByte]
		mov [ebx],al

	}
VirtualProtect(reinterpret_cast&lt;void*&gt;(&amp;OrginalFunktion),1000,oldpro,0);
</code></pre>
<p>Und es geht darum ob man mithilfe von assembler/C++ diese Funktion selbst schreiben kann oder den PM (Protection Mode) kurz ausschalten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202133</guid><dc:creator><![CDATA[Dezimiert]]></dc:creator><pubDate>Sun, 15 Apr 2012 09:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to Einige API Funktionen umschreiben on Sun, 15 Apr 2012 10:16:52 GMT]]></title><description><![CDATA[<p>Ich denke, der Thread wäre im WinAPI-Forum besser aufgehoben. Ansonsten: Dass das Vorhaben ziemlich wahnwitzig ist, ist dir ja vermutlich schon klar. Hinter der Funktion wird im Zweifel ein Syscall stecken; jedenfalls muss sich die Funktion an den Kernel wenden, um Rechte anzufordern oder abzugeben. Womöglich kannst du eine Funktion schreiben, die sich selbst an den Kernel wendet, aber ich sehe nicht wirklich, wozu das gut sein soll, wenn es eine solche Funktion in der Bibliothek schon gibt.</p>
<p>Übrigens: Mit VirtualProtect allein ist es nicht getan, wenn du im Codesegment herumschreiben willst. Du musst auch den instruction chache erneuern (FlushInstructionCache aufrufen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202146</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sun, 15 Apr 2012 10:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Einige API Funktionen umschreiben on Sun, 15 Apr 2012 10:30:37 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort es geht nur darum etwas selbst zu programmieren^^.<br />
Ich kann jede funktion aus ner Library ziehen da es ging nur darum ob ich vielleicht so etwas neues Lernen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2202155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2202155</guid><dc:creator><![CDATA[Dezimiert]]></dc:creator><pubDate>Sun, 15 Apr 2012 10:30:37 GMT</pubDate></item></channel></rss>