![]() |
eXeL@B —› Крэки, обсуждения —› Выдираем шрифты из игрушки |
Посл.ответ | Сообщение |
|
Создано: 03 декабря 2005 15:37 · Личное сообщение · #1 А чем не реверсинг? Со звуком и текстом проблем никаких не возникает, а вот к шрифтам не знаю как подлезть. Мож у кого опыт есть? Поделитесь. В аттаче три шрифта из игрушки Burnout Revenge (гонки от EA) - Big, Small и Digital. Единственное что отреверсил - общие байты. Сигнатура 4.1v (v1.4 если наоборот) в начале, потом двойное слово - смещение служебной структуры. В ней по смещению 0xA8 лежит имя шрифта. Остальное - темный лес. ![]() ![]() |
|
Создано: 03 декабря 2005 16:00 · Личное сообщение · #2 |
|
Создано: 03 декабря 2005 18:40 · Личное сообщение · #3 |
|
Создано: 03 декабря 2005 20:52 · Личное сообщение · #4 di-2, эт я был. Z0oMiK, не, ну это несерьезно ![]() ![]() |
|
Создано: 03 декабря 2005 22:34 · Личное сообщение · #5 |
|
Создано: 03 декабря 2005 22:53 · Личное сообщение · #6 |
|
Создано: 04 декабря 2005 01:10 · Личное сообщение · #7 |
|
Создано: 04 декабря 2005 01:38 · Личное сообщение · #8 |
|
Создано: 04 декабря 2005 03:55 · Личное сообщение · #9 Тэкс. Вот, кой-чего накопал я из твоих файликов. Авось поможет. Сначала сигнатура и смещение - с этим ты разобрался. Потом идут четыре 32-битных числа с плавающей точкой - 16 байт. Понятия не имею, что это (возможно, размер шрифта определяют, я не знаю). Далее идет массив из 130 DWORD'ов (всего 520 байт, последняя ячейка пустая) - очевидно, все они соответствуют символам первой половины таблицы ASCII. Далее - ещё массив, переменного размера, на его ячейки ссылаются элементы первого массива (как абсолютные смещения от начала файла). Каждая запись в этом массиве состоит из семи опять-таки 32-битных чисел с плавающей точкой и одного DWORD'а (размер записи - 32 байта). В конце массива опять несколько пустых записей. Затем идет, как ты выразился, "служебная структура", за ней - видимо, собственно изображения символов. С их форматом я пока не разобрался. Вообще, я могу и ошибаться. Тем не менее, надеюсь эта инфа верна и окажется чем-то полезна. ![]() |
|
Создано: 04 декабря 2005 11:09 · Личное сообщение · #10 |
|
Создано: 04 декабря 2005 15:23 · Личное сообщение · #11 Broken Sword пишет: Единственное чего я боюсь - если символы представлены в векторном формате, тода полная Да ну, вряд ли. Сомневаюсь, что разработчики игр стали бы с векторными шрифтами заморачиваться. Тем более - в файлах больше чисел с плавающей точкой, кроме тех, которые я нашел, не просматривается. ![]() |
|
Создано: 04 декабря 2005 20:17 · Личное сообщение · #12 Если ещё немного пофантазировать, то можно предположить, что двойные слова в записях второго массива - значения символов в юникоде. То есть если мы откроем файл DIGITAL.BIN, то увидим, что ячейка первого массива с индексом 0x21 (код пробела + 1), находящаяся по адресу 0x0000009C содержит смещение 0x00000220. А по смещению 0x00000220 + 0x1C находится двойное слово 0x00000020, которое также соответствует пробелу. Не думаю, что это совпадение. ![]() |
![]() |
eXeL@B —› Крэки, обсуждения —› Выдираем шрифты из игрушки |