当我打开 cpp 静态二进制文件时,如何识别已知函数,如 fopen/ioctl/printf?它们已被静态编译为二进制文件。
我不知道这个二进制文件的编译器。
当我打开 cpp 静态二进制文件时,如何识别已知函数,如 fopen/ioctl/printf?它们已被静态编译为二进制文件。
我不知道这个二进制文件的编译器。
据我所知,已经实现了 3 种方法来识别库函数:
Google Project Zero 的 Thomas Dullien 在他的文章“在可执行代码中搜索静态链接的易受攻击的库函数:帮助研究人员找到 0ld 天”中探索了一种基于机器学习技术的实验方法,他在文章中尝试使用相似性散列与距离度量相结合试图识别由不同编译器工具链和编译选项生成的二进制文件中的函数。文章还提到了已发表研究中的替代方法,但除了MACHOC之外,没有可用的公共代码或实现。