IDAPython 不能忽略库函数

逆向工程 艾达 蟒蛇
2021-07-04 00:42:39

我写了一个简单的 IDAPython 脚本,它只打印出本地函数而忽略库函数。但不知何故,它打印了每一个函数。这是脚本:

import idc, idautils
for func in idautils.Functions():
    flags = idc.GetFunctionFlags(func)
    # Ignore library functons
    if flags & FUNC_LIB:
        continue
    print idc.GetFunctionName(func)

我的脚本基于本教程中的第二个代码片段 ( http://researchcenter.paloaltonetworks.com/2016/06/unit42-using-idapython-to-make-your-life-easier-part-6/ )。

1个回答

这是术语的混淆。在 IDA 中,“库函数”的意思是“来自(编译器)标准库的函数”,即由 FLIRT 签名(通常用青色着色)识别的函数。这些在实践中主要在静态链接的 Windows 可执行文件中遇到。在 Linux 和 OS X 上,标准函数通常来自共享库,因此您需要另一种方法来区分它们 - 例如评论中建议的内容。