我想覆盖中断向量编号,所以我试着这样做:
section .text
global _start
_start:
mov al, 0x7f
inc al
mov byte [ override + 1 ] , al
mov eax, 1
mov ebx, 1
override:
int 0x20
此代码应该只调用syscall出口。但是当我执行它时,我得到了一个Segmentation故障。
我不明白为什么,因为[override + 1]应该是0x20的地址,al是1字节大而且我也对字节进行了类型转换,因此它们的大小相同。
GDB说它发生在这一行:
mov byte [override + 1],al
这里有什么问题?怎么解决?
我像这样编译和链接:
nasm -f elf test.asm
ld -m elf_i386 -o test test.o