Шифрование (GTA 4)
Материал из GTAModding.ru
Версия от 09:19, 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.6.0 US | 0x00BE6540 |
GTA IV 1.0.7.0 US | 0x00BE6510 |
EFLC 1.1.0.0 US | 0x00BEF028 |
EFLC 1.1.1.0 US | 0x00C705E0 |
EFLC 1.1.2.0 US | 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;
Ссылки
- Расшифровка в SparkIV
- AES Encryption на Википедии.
Форматы файлов | .dat • .gxt • .ide • .img • .ipl • .nod • .sco • .rpf • .rrr • .wdd • .wdr • .wft • .wbd/wbn • .whm • .wad • .wnv • .wpl • .wtd |
Документация | Handling.dat • gta.dat • Оружие • Катсцены • Пути • Скриптовые функции • Шифрование • Формат CFG файла настроек Скриптинг в GTA 4 |
Инструменты | APE IV • ASI Loader • IV Needle • GIMS • OpenIV • PathViewer • SparkIV • XLiveLess • RaCon |
Скриптовые программы | Alice • C++ Script Hook • Scocl • .NET Script Hook • Delphi Hook |
Туториалы | Импортирование текстур с помощью OpenIV • Импортирование текстур с помощью SparkIV |
Модификации | GTA Vice City Rage • IV:SA • Gostown Paradise IV |