Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Дешифрация 64-битных временных меток в играх: методы преобразования и обработки

Delphi , Синтаксис , Дата и Время

Объяснение задачи:

Вопрос пользователя связан с анализом 64-битных временных меток, полученных из игры. Эти метки не соответствуют стандартным форматам даты и времени, и их значения могут меняться, становясь отрицательными. Пользователь пытался разделить 64-битное значение на две 32-битные части и преобразовать его в вещественное число, но результаты были странными. В контексте обсуждения было предложено несколько решений, включая использование ключей для кодирования и декодирования временных меток.

Статья:

Введение:

В мире компьютерных игр часто используются уникальные форматы данных, включая временные метки. Эти метки могут быть закодированы по-разному, что затрудняет их понимание и обработку. В данной статье мы рассмотрим методы преобразования и обработки 64-битных временных меток, полученных из игр, на примере формата, который использует специальные ключи для кодирования и декодирования времени.

Анализ проблемы:

Исходные временные метки, представленные в 64-битном формате, не соответствуют стандартным временным шкалам и могут меняться нелинейно, что делает их использование в обычных алгоритмах даты и времени невозможным. Пользователь обнаружил, что высокие 32 бита изменяются реже и с определенной периодичностью, что указывает на возможное использование шифрования или обфусцирования.

Решение проблемы:

На основе предложенного сообществом решения, было выявлено, что высокие и низкие 32 бита временной метки закодированы независимо друг от друга. Кодирование осуществляется путем умножения каждого из 32-битных слов на ключ. Для высоких бит ключ равен 0xA85A2115, а для низких бит - необходимо уточнить ключ, так как в доступных данных он не упоминается. Декодирование производится с использованием другого ключа, который в данных указан как 0x3069263D.

Примеры кода:

function MulProc_NFSw(I: Int64; Key: UInt32): Int64;
begin
  if Blnk(I) or Blnk(Key) then
    exit;
  P: Pointer := @I;
  Hi: UInt32 := UInt32(P + 4);
  Lo: UInt32 := UInt32(P);
  Hi64: Int64 := Hi * Key;
  Lo64: Int64 := Lo * Key;
  Q: Pointer := @Result;
  UInt32(Q + 4) := Hi64 shr 32;
  UInt32(Q) := Lo64 shr 32;
end;

function Encode_Time_NFSw(J: Juncture): Int64;
begin
  if Blnk(J) then
    exit;
  Key: UInt32 := $A85A2115;
  FT: Int64 := J.FileTime;
  Result := MulProc_NFSw(FT, Key);
end;

function Decode_Time_NFSw(I: Int64): Juncture;
begin
  if Blnk(I) then
    exit;
  Key: UInt32 := $3069263D;
  FT: Int64 := MulProc_NFSw(I, Key);
  Result.SetFileTime(FT);
end;

Заключение:

Используя предложенные методы кодирования и декодирования, можно обрабатывать временные метки в играх, даже если они закодированы нестандартным образом. Важно понимать, что ключи для кодирования и декодирования могут быть различными, и их необходимо использовать в соответствии с алгоритмом, применяемым разработчиками игры.

Подтвержденный ответ:

Пользователь смог декодировать временные метки, используя обратное преобразование с ключом 0x3069263D, что подтверждает правильность выбранного метода.

Примечание:

В статье использованы примеры кода на Object Pascal (Delphi), что соответствует основной тематике сайта, на котором размещена данная статья.

Создано по материалам из источника по ссылке.

Игровые 64-битные временные метки, закодированные с использованием специальных ключей, требуют специфического подхода для их декодирования и обработки.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 14:48:29/0.0055909156799316/1