Linux内核分析——简单分析汇编代码

    xiaoxiao2021-03-25  94

    一、实验过程:

    实验内容为通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的。

    1.进入linux实验环境,打开一个终端。 2.打开Code文件下的shiyanlou_cs195文件夹,vi mian.c文件。 3.输入命令gcc -S -o main.c mian.s -m32得到main.s文件。 4.删除以点开头的行,得到最终的main.s。

    二、分析汇编代码的工作工程。

    1.首先理解ebp是指向栈底的,esp指向当前栈执行的一条指令,eip指向当前程序按顺序执行的指令,eax存储上一级函数的返回值。

    2.刚开始从main函数开始执行前四条指令,只要作用让栈中0的位置为ebp 0,栈1的位置存放8.

    3.执行call f时此时栈2的位置放的是eip 23.即当前的下一条指令也就会到f函数完成后回溯到接下来的第23行指令。

    4.接下来eip指向f函数的第一行指令,f的前5行指令作用是栈3的位置存放ebp 1,eax的值为8,栈4的位置存放eax 8。

    5.执行call g时此时栈5的位置放的是eip 15.即当前的下一条指令也就会到g函数完成后回溯到接下来的第15行指令.

    6.接下来eip指向g函数的第一行指令,g函数前两行作用是让栈6存放ebp 4,第三行和第四行指令作用是让eax=8+4=12.

    7.接下来g函数popl

    转载请注明原文地址: https://ju.6miu.com/read-5531.html

    最新回复(0)