hi
also ich versuche jetzt schon ein wenig länger eine möglichkeit zu finden ECX an einer bestimmten stelle im code von Guild Wars auszulesen
bis jetzt hab ich eine DLL, die injected wird
die enthält ne func zum code patchen , um meine eigendliche funktion aufzurufen
soweit so gut, das klappt alles
da GW TLS (Thread Local Storage) nutzt hab ich meine func als "naked" definiert
um die register nicht zu ändern
jetzt möchte ich aber das in meiner funktion ECX ausgelesen wird und dann der wert in eine datei geschrieben werden kann (oder einfach ne datei erstellen mit filename = value of ECX)
ich habs mit zb dem hier versucht:
Code:
__asm PUSH 0 //hTemplateFile = NULL
__asm PUSH 80 // |Attributes = NORMAL
__asm PUSH 2 // |Mode = CREATE_ALWAYS
__asm PUSH 0 // |pSecurity = NULL
__asm PUSH 1 // |ShareMode = FILE_SHARE_READ
__asm PUSH 80000000 // |Access = GENERIC_READ
__asm PUSH ecx //<deine ascii value> // |FileName = "deine ascii valie"
__asm call [CreateFileA] // \CreateFileA
und:
Code:
__asm ("mov %%ecx , %0" : : "g" (myecx))
wobei myecx eine long var ist
und
Code:
__asm__ ( "PUSH %0" : : "I" (0)); //hTemplateFile = NULL
__asm__ ("PUSH %0" : : "g" (80)); // |Attributes = NORMAL
__asm__ ("PUSH %0" : : "I" (2)); // |Mode = CREATE_ALWAYS
__asm__ ("PUSH %0" : : "I" (0)); // |pSecurity = NULL
__asm__ ("PUSH %0" : : "I" (1)); // |ShareMode = FILE_SHARE_READ
__asm__ ("PUSH %0" : : "g" (80000000)); // |Access = GENERIC_READ
__asm__ ("PUSH %0" :: "g" ("test.txt")); // |FileName = "test.txt"
__asm__("CALL %0" : : "c" (&CreateFileA));
btw nutze VC++ Express 08
letztes ist nicht in vc++ format, weiß nicht wie ichs umschreiben muss ^^
wär cool wenn mir jemand helfen könnt