编译环境
OS: Axianux 1.0
Compiler: gcc 3..2.3Linker: Solaris Link Editors 5.x
Debug Tool: gdb
Editor: vi最简C代码分析
为简化问题,来分析一下最简的c代码生成的汇编代码:
# vi test1.c
int main()
{
return 0;
}
编译该程序,产生二进制文件:
# gcc -o start start.c
file start
start: ELF 32-bit LSB executable, Intel 80386, version 1(SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), notstripped
start是一个ELF格式32位小端(Little Endian)的可执行文件,动态链接并且符号表没有去除。这正是Unix/Linux平台典型的可执行文件格式。
用gdb反汇编可以观察生成的汇编代码:
[wqf@15h166 attack]$ gdb start
GNU gdb Asianux (6.0post-0.20040223.17.1AX)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General PublicLicense, and you are welcome to change it and/or distribute copies of it undercertain conditions.
Type “show copying” to see the conditions.
There is absolutely no warranty for GDB. Type “show warranty” for details.
This GDB was configured as”i386-asianux-linux-gnu”…(no debugging symbols found)…Using hostlibthread_db library “/lib/tls/libthread_db.so.1”.
(gdb) disassemble main —>反汇编main函数
Dump of assembler code for function main:
0x08048310