我在挑战,我得到了一些shellcode。当我使用C运行shellcode时,出现了分段错误,我知道尝试从纯十六进制调试它是没有用的,所以我将其转换为汇编器。这是我的代码。
jmp 0x40
pop eax
mov ecx, eax
mov ebx, 0x0
mov edx, 0x53
xor eax, eax
mov al,BYTE [ecx+ebx*1]
or cl,BYTE [edx]
push ebx
push ecx
push eax
mov ecx, esp
mov eax, 0x4
mov ebx, 0x1
push edx
mov edx, 0xa000001
or al,BYTE [eax]
int 0x80
pop edx
pop ecx
pop ecx
pop ebx
inc ebx
inc ebx
dec edx
jne 0x13
mov eax,0x1
mov ebx,0xa0a0000
add BYTE [eax],al
int 0x80
call 0x8
我真的不擅长汇编程序,所以有人可以给我一些提示来弄清楚为什么发生分段错误吗?我已经尝试进行研究,但是大多数答案是人们在谈论编译,而不是实际的代码本身。