-
Автор темы
- #1
Попытался сам, но почему-то вывод 0 в логе
Глобальная переменная DWORD dynamicEax;
C++:
__declspec(naked) void Codecave() {
__asm {
//pushad
mov dynamicEax, eax
//popad
fld dword ptr ds : [eax]
mov edx, [eax + 4]
jmp [returnAddress]
}
}
void LogCoordinates() {
char logMessage[256];
snprintf(logMessage, sizeof(logMessage), "dynamicEax: 0x%08X", dynamicEax);
Log(logMessage);
if (!dynamicEax) {
Log("Error: dynamicEax is null.");
return;
}
Vector3* coords = (Vector3*)dynamicEax;
snprintf(logMessage, sizeof(logMessage), "Coordinates: X = %f, Y = %f, Z = %f", coords->x, coords->y, coords->z);
Log(logMessage);
}
ПРИ ЭТОМ, если написать так, то игра крашнет и лог отобразит это:
Error: dynamicEax is null.
in Codecave dynamicEax: 0x52A38C1C
Error: dynamicEax is null.
in Codecave dynamicEax: 0x52A38C1C
C++:
__declspec(naked) void Codecave() {
__asm {
//pushad
mov dynamicEax, eax
//popad
}
char logMessage[256];
snprintf(logMessage, sizeof(logMessage), "in Codecave dynamicEax: 0x%08X", dynamicEax);
Log(logMessage);
__asm {
fld dword ptr ds : [eax]
mov edx, [eax + 4]
jmp[returnAddress]
}
void LogCoordinates() {
if (!dynamicEax) {
Log("Error: dynamicEax is null.");
return;
}
Vector3* coords = (Vector3*)dynamicEax;
char logMessage[256];
snprintf(logMessage, sizeof(logMessage), "Coordinates: X = %f, Y = %f, Z = %f", coords->x, coords->y, coords->z);
Log(logMessage);
}
Мб нужно было завершиться функции кнопки1, чтобы регистр eax записал значение в dynamicEax, хз
Последнее редактирование: