Bytegröße einer Funktion
-
Hallo,
ist es in C++ möglich, aehnlich zu sizeof() anstatt der Größe eines Arrays die Größe einer Funktion in Bytes herauszubekommen?!
Ich habe z.B.:
void funktion()
{
_asm{
mov eax,10
add eax,20
}
}
Diesen Assemblercode möchte ich dann in einen anderen Prozess einschleusen (für einen kleinen Trainer).
Danke im voraus!!!
-
Schreib den Assemblercode in ein Extra-Modul (.asm). Wie das geht, siehst Du am besten, wenn Du eine kurze C-Funktion mit den Optionen "/c /Fa" (Visual C++) compilierst (also von der Kommandozeile mit "cl /c /Fa datei.c". Der Compiler erzeugt eine Assemblerdatei "datei.asm", die Du als Schablone fuer weitere Projekte benutzen kannst.
In C ist es leider nicht moeglich, die Groesse einer Funktion zu ermitteln. Du kannst probieren, folgendes zu machen.
void func1( void ) { int a = 5; } void func2( void ) { int b = 6; } int func_offs( void ) { return (int)(((char*)func2) - ((char*)func1)); }
Jedoch bleibt es dem Compiler ueberlassen, ob er func2 wirklich nach func1 plaziert.
-
http://www.c-plusplus.net/forum/viewtopic.php?t=99358
Wenn du interessiert bist, ich habe schonmal ein C++-Projekt erstellt für die Injection einer DLL in einen fremden Prozess. Wenn du interessiert bist, kann ich es dir ja zukommen lassen.
Wenn du einen Trainer programmieren willst reicht es übrigens im Normalfall aus, wenn du deine Traineranwendung zu Laufzeit deines Spiels laufen lässt und einfach nur den Speicher mit WriteProcessMemory periodisch auf deinem Wert hältst. Mit der RemoteCodeInjection hätte das natürlich den Vorteil, dass du den Trainer nicht laufen lassen brauchst.