function BodySetValue(Value: Single): Boolean;
begin
try
PBYTE(@Value)^ := PBYTE(@Value)^ xor $3A;
PBYTE(Pointer(DWORD(@Value) + 3))^ := PBYTE(Pointer(DWORD(@Value) + 3))^ xor $B8;
WPM4Byte(BodyAlloc[2] + $660, PDWORD(@Value)^);
except
end;
end;
end.
3A, B8, +3 이 부분들 어떻게 바뀐지 아시는 형님… 부탁드립니다
댓글2
64비트에 맞는 포인터랑 타입 수정 부터 하세요
function BodySetValue(Value: Single): Boolean;
var
TempValue: UInt32;
begin
try
TempValue := PUInt32(@Value)^;
TempValue := TempValue xor $3A;
TempValue := TempValue xor $B8;
WPM4Byte(BodyAlloc[2] + $660, TempValue);
Result := True;
except
Result := False;
end;
end;