Теперь рассмотрим кнопку 0xFFFF под надписью «Относительный поиск (Вверх)».
Принцип работы данной функции заключается в том, что мы не знаем первоначальную точку отсчёта и она находится автоматически.
Тут так же появляется новая строка «Глубина просчёта вниз». Эта строка использует десятичную систему счисления. Данная переменная является своеобразным допуском. По сути это то, насколько байт (переменная*2) мы допускаем, что пойнтер будет отдалён от точки отсчёта.
Картинка для наглядности.
Из картинки видно, что пойнтер отдалён от точки отсчёта на 24 байта. То есть, чтобы его найти, в строке «Глубина просчёта вниз» нужно указать значение, как минимум, 13 (24/2+1).
Пример использования:
Для теста возьмём игру Heimdall для Sega CD
Нам понадобится файл из неё SUBCPU.DAT
Будем искать указатель на 0x131A1
Будем искать пойнтер на фразу "The journey to this island is too far or too treacherous.".
Установим значение «Глубина просчёта вниз» равное 20. То есть мы допускаем, что указатель отдалён от точки отсчёта примерно на 40 байт.
После нажатия на кнопку мы получим результат:
$ 00012E38 => $ 00012E3A (03 69)
$ 0000EFA8 => $ 0000EFBC (41 F9)
$ 0000EF74 => $ 0000EF7A (42 2D)
$ 0000EF75 => $ 0000EF8C (42 2D)
$ 0000BD88 => $ 0000BD90 (74 19)
$ 00006134 => $ 00006136 (D0 6D)
$ 00006135 => $ 00006148 (D0 6D)
$ 0000329C => $ 000032C2 (FF 05)
Где
$00012E38 – точка отсчёта
$00012E3A – адрес, по которому расположен наш указатель.
03 69 – пойнтер
Правильный пойнтер устанавливается экспериментальным путём. Если нужно пойнтера нет, то вполне возможно, что нужно увеличить глубину просчёта. Но вмести с ним увеличится и количество найденных указателей, которые нужно будет проверять вручную.
Прикрепленные изображения