从汇编角度看函数
Posted 小道安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从汇编角度看函数相关的知识,希望对你有一定的参考价值。
1. 函数简介
在代码开发过程中,函数是一个必然存在的,它是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时还带有一入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给调用它的程序。
函数主要需要关注两个方向问题:函数参数,函数返回值
2. 从汇编中看函数
函数功能的实现部分
PUSH EBP 提升堆栈,为函数执行提供空间
MOV EBP,ESP
SUB ESP,20
PUSH EBX 保留现场:函数在执行的时候会用到一些寄存器,但这些寄存器中的值很可能会被后面的
PUSH ESI 程序用到,所以要先存储到内存中
PUSH EDI
LEA EDI,DWORD PTR SS:[EBP-20] 向分配的空间填充数据
MOV ECX,16
MOV EAX,CCCCCCCC
REP STOS DWORD PTR ES:[EDI]
MOV EAX,DWORD PTR SS:[EBP+4] 该函数的功能
ADD EAX,DWORD PTR SS:[EBP+C]
POP EDI 恢复现场
POP ESI
POP EBX
MOV ESP,EBP 降低堆栈
POP EBP 恢复栈底数据
RETN 函数执行完毕,返回到调用处
函数的调用部分
PUSH 8 函数的参数
PUSH 1
CALL 0040200A 调用函数
以上是关于从汇编角度看函数的主要内容,如果未能解决你的问题,请参考以下文章