IDA 启动签名格式

逆向工程 艾达
2021-06-22 13:38:10

IDA 启动签名是 FLIRT 中使用的一组签名,用于检测静态链接可执行文件中使用的库。
我即将使用这些签名来检测在可执行文件中使用了哪个库。
我必须在启动文件夹中的 IDA FLAIR 中使用模式文件。
但我不知道它的格式以及每个字段的含义 (:?)
这里有一些示例模式:

1)8BFF558BECE8........E8........5DC3.............................. 00 0000 0011 :0000 s=A/- ^0006 ___security_init_cookie ^000B ___tmainCRTStartup
2)6A0C68........E8........8BF98BF28B5D0833C0408945E485F6750C3915.. 00 0000 00F6 :0000 o=2:a=108:vc32rtf:l=vc32mfc/vcextra/vc8atl:m=+67^[_DllMain@12]~msmfc2d/~@vc32mfc@; :00E4@ $LN18 :00E3@ $LN25 :00D3@ $LN29 :00D3@ $LN17 ^0003 __sehtable$___DllMainCRTStartup ^0008 __SEH_prolog4 ^001F ___proc_attached ^0037 __pRawDllMain ^0055 __CRT_INIT@12 ^0068 _DllMain@12 ^00DD ___CppXcptFilter ^00F1 __SEH_epilog4 ......0F84C50000008365FC003BF0740583FE02752EA1........85C07408575653FFD08945E4837DE4000F8496000000575653E8........8945E485C00F8483000000575653E8........8945E483FE01752485C07520575053E8........576A0053E8........A1........85C07406576A0053FFD085F6740583FE037526575653E8........85C075032145E4837DE4007411A1........85C07408575653FFD08945E4C745FCFEFFFFFF8B45E4EB1D8B45EC8B088B095051E8........5959C38B65E8C745FCFEFFFFFF33C0E8........C3

我在互联网上找不到任何相关内容。任何机构都可以帮助我了解格式吗?
更多关于我的需求:
我想在 PE 文件中找到库函数(在我自己的程序中而不是由 IDA),并且由于所有库都有大量的 FLAIR 模式,由于内存和速度问题,我无法完全加载它们。
我还阅读了 IDA FLAIR 中的 pat.txt,我知道模式格式,但启动签名格式有点不同,并且有新部分,所以我想了解这些新部分,例如: o=2:a=108:vc32rtf:l=vc32mfc/vcextra/vc8atl:m=+67^[_DllMain@12]~msmfc2d/~@vc32mfc@;

1个回答

首先,您应该首先阅读 IDA flair 实用程序中包含的 pat.txt。它描述了 .pat 文件的格式。

其次,如果你能澄清你正在尝试做的事情,那将会很有帮助。您使用的是哪种处理器/文件类型?在许多情况下,您根本不需要直接操作 .pat 文件,因为 Hex-Rays 提供了从这些 .pat 文件生成 .pat 文件和 .sig 文件的工具。

第三,尚不清楚您尝试使用哪种类型的签名以及原因。IDA“启动”签名是一种特殊形式的签名,在您首次为新的二进制文件创建数据库时使用。启动签名的目的是识别启动例程和用于创建二进制文件的编译器。这可能反过来触发加载额外的库签名文件。库签名文件用于识别静态链接到二进制文件中的库代码的存在。签名通常是通过解析链接到您感兴趣的二进制文件的静态链接库的副本来生成的。最常见的情况是需要理解 .

此链接也可能有用:Hex-Rays FLIRT