Шифрование (GTA 4)

Материал из GTAModding.ru
Версия от 13:54, 20 июня 2010; Dageron (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Алгоритм шифрования

Алгоритм шифрования, использованный для *.rpf, *.img и *.sco файлов называется Advanced Encryption Standard (AES). Ключ шифрования одинаков для всех игровых версий GTA IV/EFLC, включая Xbox360. Этот же алгоритм (однако, с другими ключами) используется на многих играх от Rockstar.

Характеристика алгоритма шифрования:

  • Размер блока: 128 бит (16 байт)
  • Размер ключа: 256 бит (32 байта)
  • Режим: electronic code book (ECB)
  • Повторяется: 16 раз

Вся зашифрованная информация может быть разбита на блоки по 16 байт и расшифрована отдельно. Расшифровка происходит с использованием 128 битного ключа 16 раз на каждом блоке данных. Если последний блок меньше 16 байт, он остается не зашифрованным.

Ключ шифрования

256-битный ключ, обязательный для шифровки и дешифровки может быть получен из .exe файла со следующих оффсетов:

Версия игры Оффсет
GTA IV XENON (Xbox360) 0x00A80F40
GTA IV 1.0.0.0 US 0x00A94204
GTA IV 1.0.1.0 US 0x00B607C4
GTA IV 1.0.2.0 US 0x00B56BC4
GTA IV 1.0.3.0 US 0x00B75C9C
GTA IV 1.0.4.0 US 0x00B7AEF4
GTA IV 1.0.1.2 JAP 0x00B8813C
GTA IV 1.0.2.2 JAP 0x00B8C38C
GTA IV 1.0.0.1 RUS 0x00B5B65C
GTA IV 1.0.1.1 RUS 0x00B569F4
GTA IV 1.0.2.1 RUS 0x00B76CB4
GTA IV 1.0.3.1 RUS 0x00B7AEFC
GTA IV 1.0.0.4 International 0x00BE1370
GTA IV 1.0.5.1 RUS 0x00BE6518
GTA IV 1.0.5.2 JAP
GTA IV 1.0.6.0 US 0x00BE6540
GTA IV 1.0.7.0 US 0x00BE6510
GTA IV 1.0.6.1 RUS
GTA IV 1.0.6.2 JAP
EFLC 1.1.0.0 US 0x00BEF028
EFLC 1.1.0.1 RUS 0x00BEF040
EFLC 1.1.1.0 International 0x00C705E0
EFLC 1.1.2.0 International 0x00C6DEEC

В Xbox360-версии ключ можно извлечь из gtaiv_360.exe, находящемся в default.xex.

Вы можете использовать SHA1 хеш для проверки правильности ключа: DE A3 75 EF 1E 6E F2 22 3A 12 21 C2 C5 75 C4 7B F1 7E FA 5E (Примечание: это не ключ шифрования!)

Не рекомендуется публиковать где-либо сам ключ, либо включать его в программу, поскольку публикация ключа попадает под нарушение авторских прав.

Игра может читать как шифрованные, так и не шифрованные архивы. SparkIV оставляет измененные игровые архивы не шифрованными, OpenIV - шифрованными.

Примеры

Программно расшифровка архивов может быть реализована через AesLib:

AES_set_decrypt_key(key, 256, context);
for (int i = 0; i < (int) (data_size/16); i++) {
    void *p = (void *) (data_offset + i*16); 
    for (int j = 1; j <= 16; j++)            // Повторяется 16 раз
        AES_decrypt_block(p, p, context);
}
AES_set_decrypt_key(@CAesKey[0], 256, context);
for i := 0 to data_size div 16 - 1 do begin
  Cardinal(p) := Cardinal(Data) + i*16;
  for j := 1 to 16 do           // Повторяется 16 раз
    aes_decrypt_block(p^, p^, context);
end;

Ссылки

п · о · р
GTA 4 Grand Theft Auto IV
Форматы файлов.dat.gxt.ide.img.ipl.nod.sco.rpf.rrr.wdd.wdr.wft.wbd/wbn.whm.wad.wnv.wpl.wtd
Документация Handling.datgta.datОружиеКатсценыПутиСкриптовые функцииШифрованиеФормат CFG файла настроек
Скриптинг в GTA 4
ИнструментыAPE IVASI LoaderIV NeedleGIMSOpenIVPathViewerSparkIVXLiveLessRaCon
Скриптовые программыAliceC++ Script HookScocl.NET Script HookDelphi Hook
ТуториалыИмпортирование текстур с помощью OpenIVИмпортирование текстур с помощью SparkIV
МодификацииGTA Vice City RageIV:SAGostown Paradise IV