shellcode - 简化的代码不起作用

时间:2015-03-17 08:18:30

标签: assembly system-calls shellcode

我不知道为什么,但是当我使用下面代码的十六进制作为shell代码时,它可以工作:

Section .text
global _start
_start:
mov ebx,0
mov eax,1
int 0x80

但是当我使用下面代码的十六进制时,它不起作用并且出现分段错误:

Section .text
global _start
_start:
xor ebx,ebx
mov al,1
int 0x80

我知道这是因为使用'al'。我不知道为什么使用'eax'正常工作但使用'al'得到错误?

非常感谢。

Ya Ali。

1 个答案:

答案 0 :(得分:1)

因为int 0x80需要32位参数。当你传递低8位(AL)时,eax的高位部分可能包含任何内容(未定义的值),所以不是传递1而是最终传递0x ?????? 01