一个有意思的汇编问题
2011-02-23 21:47
211 查看
.section .data
output:
.ascii "what the fuck~!!/n"
.section .text
.global main
main:
movl $4,%eax #syscall_write
movl $1,%ebx #(fd = 1 )== stdout
movl $output,%ecx #string addr
movl $1000,%edx #size,but overflow?
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
/*对应c代码为*/
#include <unistd.h>
#include <string.h>
int main()
{
char *buf = "what the fuck~!!";
write(1,buf,1000);
}
为什么c语言编译后的可执行代码会溢出(打出n多垃圾...)汇编代码产生的可执行打印正确的字符串。
编译都为命令:
gcc -o
呼呼,经过大神的帮助,终于把这个问题搞出来了,实际上汇编也打印了后面地址中的字符了,只不过这些字符是非显示的字符。而c语言打印的地址数据段中后面被编译器加了很多乱七八糟的信息(如编译器的信息)。这是把汇编产生的结果冲定向到文件中的显示:
output:
.ascii "what the fuck~!!/n"
.section .text
.global main
main:
movl $4,%eax #syscall_write
movl $1,%ebx #(fd = 1 )== stdout
movl $output,%ecx #string addr
movl $1000,%edx #size,but overflow?
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
/*对应c代码为*/
#include <unistd.h>
#include <string.h>
int main()
{
char *buf = "what the fuck~!!";
write(1,buf,1000);
}
为什么c语言编译后的可执行代码会溢出(打出n多垃圾...)汇编代码产生的可执行打印正确的字符串。
编译都为命令:
gcc -o
呼呼,经过大神的帮助,终于把这个问题搞出来了,实际上汇编也打印了后面地址中的字符了,只不过这些字符是非显示的字符。而c语言打印的地址数据段中后面被编译器加了很多乱七八糟的信息(如编译器的信息)。这是把汇编产生的结果冲定向到文件中的显示:
相关文章推荐
- 关于汇编的一个小问题!
- 一个有意思的逻辑判断问题
- 一个很有意思的序列化崩溃问题 -- 简化问题找到根源
- java面试时遇到的一个有意思的小问题
- 一个有意思的问题
- 今天有同学提了一个很有意思的问题, 涉及到曲线坐标, 我没做出来...
- 一个IE7下,用form表单跳转iframe提交,然后下载文件。遇到的很有意思的问题
- Linux下的一个简单汇编程序, .long声明数据的长度问题!
- 一个有意思的小程序,考验多线程问题能力
- 一个很有意思的终端高端口的问题
- 类vs组件类,一个有意思的概念问题
- java的接口相关的,一个有意思的问题
- 工作中遇到的一个相当有意思的问题(关于Windows和linux环境下执行PHP,ajax,javascript,flexigrid的一个莫名异常)
- 一个问题:关于类型转换Type Cast(汇编讲解 as 语法)
- linux的嵌入汇编的一个问题(关于earlyclobber)
- 一个关于Spring AOP很有意思的问题。
- Linux下的一个简单汇编程序, .long声明数据的长度问题!
- 一个有意思的Ruby Webdriver超时问题的解决过程
- 一个有意思的UNICODE问题:导出excel表格
- 多线程学习中碰到的一个很有意思的问题