2014-02-16 1 views
0

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

Я нахожу одну проблему в разобранном ассемблерный код, генерируемый из 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 не использует ключевое слово 'offset'. Просто 'dd LeadUp1' и т. Д. Должны это сделать. Если у вас их много, вы можете «% define offset» (как ничто) заставить Nasm игнорировать его. Наличие таблицы перехода в 'section .text' не должно быть проблемой. Память будет только для чтения, но вы, вероятно, не хотите, чтобы ваша таблица перехода была записана в любом случае ... –

+0

@FrankKotler Да, вы правы! Спасибо, Фрэнк :) – computereasy

+0

@FrankKotler Если вы хотите ответить на этот вопрос ниже, я буду отмечать его как «ответ», и он принесет пользу другим :) – computereasy

ответ

1

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

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