我想打印AAAA,如下所示:
BITS 32;
;write;
push 0x41414141;
pop ecx ;
mov eax, 4 ; write is syscall 4 for Ubuntu 32-bit
mov ebx, 1 ; stdout
mov edx, 4 ;
int 0x80 ;
;exit;
mov eax, 1 ;
mov ebx, 0 ;
int 0x80 ;
然而,一旦组装和链接这些代码只存在,没有错误,有什么问题吗?
1条答案
按热度按时间rks48beu1#
快速修复您的代码:
没有解释,因为你应该首先检查我在评论中问了什么,然后修复将是显而易见的,或者你将不得不问一些你不明白的事情……
如果使用
strace ./my_program
运行原始代码,您会看到write()
返回-EFAULT,因为您传递了一个错误的地址。总是使用strace
来调试产生系统调用并且行为不符合预期的程序。