GCC帧指针的开启与关闭以及反汇编测试

Posted rtoax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCC帧指针的开启与关闭以及反汇编测试相关的知识,希望对你有一定的参考价值。

编译阶段:

  • -fno-omit-frame-pointer:开启帧指针
  • -fomit-frame-pointer:关闭帧指针

代码中添加:

  • __attribute__((optimize("no-omit-frame-pointer"))) 修饰函数,开启帧指针
  • __attribute__((optimize("omit-frame-pointer"))) 修饰函数,关闭帧指针

反汇编测试

#ifdef OFF
#define _frame_pointer	__attribute__((optimize("omit-frame-pointer")))
#else
#define _frame_pointer
#endif

_frame_pointer int foo()
{
	int i = 0;
	return i+1;
}
开启帧指针(左)和关闭帧指针(右)对比

以上是关于GCC帧指针的开启与关闭以及反汇编测试的主要内容,如果未能解决你的问题,请参考以下文章

如何反汇编 Pro*C/C++ 程序? [关闭]

自制反汇编工具使用实例 其二(使用xmm寄存器初始化对象,以及空的成员函数指针)

GCC:编译成程序集并明确与代码的对应关系?

C++反汇编第二讲,反汇编中识别虚表指针,以及指向的虚函数地址

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

反汇编工具使用