2015-01-01 6 views
0

Я пытаюсь разобрать код BIOS для исходного Xbox, но у меня возникли проблемы с настройкой Xrefs с сегментацией защищенного режима. Например, инструкция:Сегментация защищенного режима в IDA

seg001: FFCE JMP большие далеко PTR 8: 0FFFFFE00h

селектор сегмента 8 ссылки запись ГДЛ с сегментом базы 0, так что в результате адрес должен быть 0FFFFFE00h, но МАР обрабатывает его как база сегментов реального режима; в результате он заканчивается с недопустимым Xref для адреса 0FFFFFE80h, который находится в середине инструкции.

Я пробовал вручную вводить инструкцию, но тогда я не получаю Xref по адресу. Я могу исправить байт селектора равным нулю, но я надеюсь, что есть лучший способ. Можно ли сообщить IDA использовать настраиваемый базовый адрес для данного сегмента селектора? Если нет, есть ли лучшее обходное решение, чем исправление?

ответ

0

После того, как я прокрутил несколько файлов IDC, я нашел функцию с именем SetSelector, которая устанавливает базовый адрес заданного селектора. Итак, все, что мне нужно было сделать, это вручную добавить вызов в сценарий, чтобы установить базу для селектора 0x8 на 0:

SetSelector(0x8, 0);