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
Code:
__asm ("mov %%ecx , %0" : : "g" (myecx))
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));
letztes ist nicht in vc++ format, weiß nicht wie ichs umschreiben muss ^^
wär cool wenn mir jemand helfen könnt