逆向学习-IDA学习(二)

GetFunctionFlags(ea)它可以用来检索关于函数的信息。

FUNC_NORET

  这个标志表示某个函数是否有返回值,它本身的值是 1,下面是一个没有返回值的函数,注意它没有函数的最后并不是 ret 或者 leave 指令。

FUNC_FAR

  这个标志非常少的出现,标志程序是否使用分段内存,它的值为 2。

FUNC_USERFAR

  这个标志也非常少见,也很少有文档,HexRays 把它描述为“user has specified far-nessof the function”,它的值是 32.

FUNC_LIB

  这个表示用于寻找库函数的代码。识别库函数代码是非常有必要的,因为我们在分析的时候一般将其跳过,它的值是 4。

  

FUNC_STATIC

  这个标志作用在于识别该函数在编译的是否是一个静态函数。在 c 语言中静态函数被默认为是全局的。如果作者把这个函数定义为静态函数,那么这个函数在只能被本文件中的函数访问。利用静态函数的判定我们可以更好的理解源代码的结构。

FUNC_FRAME

  这个标志表示函数是否使用了 ebp 寄存器(帧指针),使用 ebp 寄存器的函数通常有如下的语法设定,目的是为了保存栈帧。  

  

FUNC_BOTTOMBP

  和 FUNC_FRAME 一样,该标志用于跟踪帧指针(ebp)。它作用是识别函数中帧指针是否等于堆栈指针(esp)。

FUNC_HIDDEN

  带有 FUNC_HIDDEN 标志的函数意味着它们是隐藏的,这个函数需要展开才能查看。如果我们跳转到一个标记为 HIDDEN 的地址的话,它会自动的展开。

FUNC_THUNK

  表示这个函数是否是一个 thunk 函数,thunk 函数表示的是一个简单的跳转函数。

原文地址:https://www.cnblogs.com/whitehawk/p/10806857.html