Как бороться с таблицей переходов, встроенной в секцию.text в nasm?

По сути, я использую IDA Pro для дизассемблирования некоторых двоичных файлов из SPEC2006 и выполняю некоторые модификации, чтобы сделать его доступным для носителей в Windows 7 32bit.

Я нахожу одну проблему в разобранном ассемблерном коде, сгенерированном из IDA Pro, например:

            ;this is .text section
            .....
            LeadUpVec:
                dd offset LeadUp1
                dd offset LeadUp2
                dd offset LeadUp3
            LeadUp1:
            ;this is .text section

Очевидно, IDA Pro поместила эту таблицу переходов в код.

Я использую Nasm для сборки этого кода, и он генерирует это:

error: comma expected after operand 1  

в каждой из четырех строк

Я изменяю это так:

            ;this is .text section
            .....
            section .data         <--- I add it here
            LeadUpVec:
                dd offset LeadUp1
                dd offset LeadUp2
                dd offset LeadUp3
            section .text         <--- I add it here
            LeadUp1:
            ;this is .text section

Но он по-прежнему генерирует одинаковые ошибки в каждой из четырех строк...

   error: comma expected after operand 1  

Кто-нибудь может мне помочь? Благодарю вас!

1 ответ

Решение

Хорошо, считай это "ответом".

Nasm не использует ключевое слово смещения. Просто дд LeadUp1 и т. Д. Должен это сделать. Если у вас их много, вы можете% определить смещение (как ничто), чтобы Nasm игнорировал его. Наличие таблицы переходов в секции.text не должно быть проблемой. Память будет доступна только для чтения, но, вероятно, вы все равно не хотите, чтобы ваша таблица переходов была доступна для записи...

Другие вопросы по тегам