What is that supposed to be? reinterpret_cast is spelled another way and it only takes one parameter which is reinterpreted bytewise, no constructor or conversion operator is being called.
From the C++11 Standard, see §5.2.10 "Reinterpret Cast" [expr.reinterpret.cast]:
Quote:
The result of the expression reinterpret_cast<T>(v) is the result of converting the expression v to type T. If T is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if T is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the lvalue-to- rvalue (4.1), array-to-pointer (4.2), and function-to-pointer (4.3) standard conversions are performed on the expression v. Conversions that can be performed explicitly using reinterpret_cast are listed below. No other conversion can be performed explicitly using reinterpret_cast.
Does the same, is more performant as inline assembly is not going to be optimized.
What is that supposed to be? reinterpret_cast is spelled another way and it only takes one parameter which is reinterpreted bytewise, no constructor or conversion operator is being called.
From the C++11 Standard, see §5.2.10 "Reinterpret Cast" [expr.reinterpret.cast]:
uintptr_t *server_ptr = reinterpret_cast<uintptr_t *>(ADR_SERVERPOINTER);
Kann man das auch Global, also außerhalb vom Thread packen ?
Ich glaube , damit du es nur 1x schreiben musst, und es die für alle weiteren Quellcodes dieser Art wirkt.
Das ergibt nicht einmal grammatikalischen Sinn.
-----
Heute mal wieder ein kleiner Release zum Thema Hotpatching.
Große Teile der WinAPI sind mit dem Prefix "mov edi, edi" generiert. Das ist das gleiche wie zwei "nop" Anweisungen. Funktionen, die dieses Präfix haben, kann man sehr leicht hooken mit einer Hotpatch genannten Methode.
Mein Snippet setzt dabei folgendes voraus:
- Es wird kompiliert unter Visual Studio 2012,
- Das VC++ November 2012 CTP ist installiert (Download: ) und
- Das VC++ November 2012 CTP ist in Visual Studio aktiviert unter Projekteinstellungen (Alt+F7) > Konfigurationseigenschaften > Allgemein > Plattformtoolset.
Eine kleine Beispielanwendung, die die Anwendung für MessageBoxA/MessageBoxW zeigt, ist diese hier:
Eine kurze Erläuterung zu den einzelnen Sachen, die ich hier zusammengeschrieben habe:
(1) virtual_protect_lock verändert bei Objekterzeugung die Page-Protection, bei Verlassen des Scopes wird diese wieder zurückgesetzt. Tritt hierbei ein Fehler auf, wird ein std::system_error erzeugt und als exception geworfen. Der Errorcode ist das Ergebnis von GetLastError.
(2) install_hotpatch setzt den Hotpatch. Bei einem Fehler von virtual_protect_lock wird die Funktion abgebrochen, indem die Exception erneut geworfen wird. Die Funktion hat zwei Parameter: Einen Zeiger auf die Funktion, die man hooken möchte, und einen Zeiger auf den Hook selbst. Der Rückgabewert der Funktion ist ein Zeiger auf die originale Funktion nach dem Hook. Alle drei Funktionszeiger müssen exakt die gleiche Signatur haben. Wenn die Funktion für einen Hotpatch ungeeignet ist oder bereits einer installiert ist, passiert nichts.
(3) Die Funktion uninstall_hotpatch funktioniert analog zu install_hotpatch und entfernt den Hotpatch, wenn einer gesetzt ist. Einziges Parameter ist hier ein Zeiger auf die Funktion, deren Hotpatch man entfernen möchte.
Es sei dazu noch gesagt, dass man virtual_protect_lock nicht in STL Containern verwenden sollte, weil der Destruktor eine Exception werfen kann.
---
EDIT: Verwarnung, weil ich nach mehreren Tagen ohne aktiven Post einen Release in einen neuen Post packe anstatt sie in den alten zu packen? Was ist das denn bitte für eine Moderation?
1. Soweit klappt alles, nur wie is die source für den speedhack? Hab schon alles mögliche ausprobiert aber nichts klappt :/
2. No spread bzw. Super No spread geht nicht bzw. stürzt bei anderen source ab
3. No reload funktioniert auch nicht
Wenn ihr mier helfen würdet wäre schon ganz cool
danke schonmal
WarRock EU - Code Snippets 07/12/2012 - WarRock - 7490 Replies Hi Leute,
in diesem Thread könnt ihr:
-> Nach Sourcecodes fragen(Beispiel unten)
-> Eure Sourcecodes posten(Wenn sie nicht von euch sind mit Credits!)
-> Fragen ob eure Source evtl. einen Fehler hat
-> Fragen was welcher Fehler bedeuted
-> Sourcecodes entnehmen(Bitte beim Release dann Credits angeben!)