 |
Цитата: |
 |
|
|
|
|
|
|
SlavaVlasov, как узнать десятичное значение любого адреса? Excel какой программой можно заменить?
|
|
 |
|
 |
|
Заменить можно таблицами на
Google Drive или
Яндекс диск, либо Блокнотом с использованием табуляции (клавиша
TAB) - можно ровнее в столбики пододвинуть строки.
Теперь про десятичные значения. Искать их можно через Hex-редактор
HxD: у него встроенный декодер справа в "
Data Inspector". Принцип действия - выделяешь 4 байта и смотришь, что он декодировал. Так как число из
UltraISO нам уже известно, мы можем выделять, допустим, с
1-го байта по
4-й или со
2-го по
5-й, пока число нужное не получим. Хотя для понимания можно пользоваться разделением строки редактора на
4: один символ в столбике "
Decoded text" - это двухзначное число
Hex. Если посчитать количество знаков в
Decoded text, мы увидим, что их
16. 16 делим на 4, получаем
4. То есть, должно быть
4 указателя в строке - по
4 байта каждый. Но в случае с
BBLIT там есть еще какие-то значения, которые не проверял (скорее всего, размер файла - после адреса принято писать размер блока данных, которые относятся к этому файлу). Чтобы поменять значение в
Hex-формате, нужно просто в
Data Inspector дважды кликнуть на десятичное значение в
UInt32 и ввести новое десятичное.
Hex-значение поменяется автоматически. То есть получается процедура в обе стороны: и декодировать можно из
Hex в
Dec, и закодировать из
Dec в
Hex.
Вот пример на
BBLIT:
Здесь мы видим, что значение
8F 28 00 00 декодируется как
10383. Такое же число мы видим в столбике "
LBA" в
UltraISO, а относится оно к файлу
TITLE.BZZ, который является меню игры (где
Press Start). Дальше...
За ним идет другой адрес -
0B BA 00 00. Он относится к файлу
LANGUAGE.BZZ (меню выбора языка), хотя по списку он идет перед
TITLE.BZZ. Дальше...
Следующий указывает вообще на первый файл в списке. То есть, вот наглядный пример, зачем нам список. Нельзя просто вставлять адреса из списка
UltraISO, который отсортирован по-своему, а в
EXE-файле игры - по своему. Поэтому по адресам нам нужно понять последовательность файлов.
Если игра не выходила на сборнике, есть способ поиска
LBA по значению из
UltraISO:
Например, здесь мы хотели узнать адрес файла
LOADING.BZZ (
дефолтный экран загрузки с часами). Адрес
LBA -
43545. Переходим в
HxD, нажимаем
CTRL+F, переходим на вкладку поиска целого числа "
Integer number", вводим адрес
LBA из
UltraISO, указываем
32-битный размер (чтобы он искал именно
4-байтные значения, а не 2-х байтные, иначе с большей вероятностью найдет все что угодно, и неясно будет, где
LBA), убеждаемся, что порядок байт стоит
Little Endian, до кучи можно направление поиска выбрать "
All" и ищем по всему файлу с самого начала, независимо в какой области файла ты сейчас находишься, жмакаем OK и он найдет это значение и его местоположение. А рядом могут оказаться и другие адреса. А дальше создаем список.