在学习过了孟老师的视频教学之后,实验做起来相对容易一些。
1、我使用ls命令查看了当前目录下的文件,进入Code/shiyanlou_cs195目录下进行代码编写,如图1。
2、创建main.c文件,编写代码,我将所给的示例程序中的数值进行了修改,如图2。
3、保存之后,使用gcc -S -o main.s main.c -m32命令生成汇编语言文件。
4、打开main.s文件,如图4,里面是C程序对应的汇编语言。
5、为了分析方便,将所有以.开头的语句都删除,我查了一下Linux环境下的命令,可以用dd直接删除一行代码,剩下的就是纯汇编代码,如图5。
通过这次实验,使我对如何反汇编一个C程序有了一定了解,使用gcc -S -o main.s main.c -m32命令,-m32主要是指生成32位的格式。另外,调用其它函数时,将指令指针入栈保存,以便函数执行结束能返回来继续下一条指令的执行,相当于push eip。函数参数入栈,参数入栈顺序是从右到左进栈。函数退出时,将esp赋值给ebp,从而释放当前函数所使用的栈空间。
注:上传了5张截图不知道能不能看到,所以又用实验楼内的截图工具截了两张。