一、编译和反编译
1、编译单个C语言源文件:
命令格式: gcc 文件名.c -o 输出文件名
命令解释: 使用gcc编译器编译源文件,并指定生成的可执行文件名。
例子:(在Ubuntu下)
先建立并编辑一个简单的C语言程序:
nano test.c # 使用nano编辑器
保存并退出,编译:
gcc test.c -o test
执行程序:
./test
2、编译汇编语言文件:
命令格式: gcc -m32 -c 文件名.s
得到二进制文件 文件名.o
例子:(在Ubuntu下)
先建立并编辑一个简单的汇编语言文件:
nano test.s. # 使用nano编辑器
编辑内容,保存并退出:
执行以下命令进行编译:
gcc -m32 -c test.s
看到生成的test.o:
3、反编译可执行文件:
命令格式: objdump -d 文件名
例子: 反编译之前得到的test(反编译生成机器代码)
objdump -d test
得到如下结果:
4、反编译二进制文件:
命令格式: objdump -d 文件名
例子: 反编译之前得到的test.o
objdump -d test2.o
得到如下结果:
在反汇编结果中可以看到相应的汇编语言命令。