一个c程序反汇编过程(zz)

时间:2021-07-04 15:29:31

zz from http://blog.luoyuanhang.com/

最基本的反汇编方法是gdb xxx; disassemble main/其他函数

#反汇编一个简单的C程序并分析

C 源码:

int g(int x)
{
return x+1;
} int f(int x)
{
return g(x);
} int main(void)
{
return f(2) + 3;
}

汇编源码:

1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5 addl $1, %eax
6 popl %ebp
7 ret
8 f:
9 pushl %ebp
10 movl %esp, %ebp
11 subl $4, %esp
12 movl 8(%ebp), %eax
13 movl %eax, (%esp)
14 call g
15 leave
16 ret
17 main:
18 pushl %ebp
19 movl %esp, %ebp
20 subl $4, %esp
21 movl $2, (%esp)
22 call f
23 addl $3, %eax
24 leave
25 ret

执行过程:(从 main 开始)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)

一个c程序反汇编过程(zz)