如何处理嵌入在nasm的.text段中的跳转表?

时间:2014-02-16 17:45:36

标签: assembly nasm ida jump-table

基本上我使用IDA Pro从SPEC2006中反汇编一些二进制文件,并进行一些修改工作,使其在Windows 7 32bit上可以重新编程。

我在IDA Pro生成的反汇编asm代码中发现了一个问题:

            ;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 个答案:

答案 0 :(得分:1)

好的,请将其视为“答案”。

Nasm不使用offset关键字。只是dd LeadUp1等应该这样做。如果你有很多'em',你可以%定义偏移量(没有任何东西)让Nasm忽略它。在section .text中有一个跳转表应该不是问题。内存将是只读的,但你可能不希望你的跳转表可写...