我使用IDA Pro 6.1反汇编ELF文件,该文件是在32位Linux上编译的,gcc 4.6.3
我修改了代码并尝试重新组装,在这里发现了一个问题(这是IDA Pro直接创建的):
main proc near
......
mov dword ptr [esp+4], offset msgid
......
......
foo proc near
msgid = dword ptr -18d
......
mov [esp+1Ch+msgid], 1
section .rodata
msgid db 'extra operand %s',0
所以如果我做一些修改工作和组装它使用nasm,它会产生这个错误:
error: label or instruction expected at start of line
定位在这条线上:
msgid db 'extra operand %s',0
如果我像这样修改它:
main proc near
......
mov dword ptr [esp+4], offset msgid111
......
......
foo proc near
msgid = dword ptr -18d
......
mov [esp+1Ch+msgid], 1
section .rodata
msgid111 db 'extra operand %s',0
那么这部分就没有错误了。
所以我的问题是:
- 为什么 IDA Pro 会使用变量名作为宏名?
- 有没有比修改变量名更好的方法来绕过这个错误?
谢谢!