我目前正在IDA中探索一些二进制文件,其中一些函数由源代码辅助。由于各种原因可以访问编译器。意味着我不能使用显而易见的解决方案来编译源代码并使用IDB2PAT或rizzo之类的东西来创建签名。

如何在不编译的情况下从源代码创建函数签名?

#1 楼

为IDA创建签名文件的过程分为两步:


创建PAT文件
将PAT文件编译为SIG文件

工具IDA的FLAIR工具集随附的工具允许您自动为OMF,COFF,ELF,PSX和Trimedia库生成PAT文件。该工具集还包含PAT-to-SIG编译器。

即使您没有库二进制文件(因此也无法自动生成PAT文件),但前提是PAT文件格式记录在FLAIR工具集的pat.txt文件中,您可以编写自己的工具来生成PAT文件,甚至手动创建PAT文件(然后将其编译以创建签名文件)。

但是,由于这些模式基于已编译的字节,因此您仍然需要库文件的二进制形式,因此您仍然可以使用IDB2PAT或IDB2SIG。换句话说,如果您无法编译源代码并且无法(或不想)识别IDB中的库函数,那么您将无法为此创建传统的IDA签名文件。库代码。

评论


(请注意,您需要是获得IDA许可的用户,才能获得下载上面链接的FLAIR工具集的凭据。)

–詹森·格夫纳(Jason Geffner)
15年5月30日在20:30

PAT文件依赖于该函数的前32个字节和其他几个功能。正如您已经说过的,它需要了解编译后的字节(以及用于优化的特定编译器标志),因此您的解决方案实际上并不是解决我的问题的方法。使用IDB2PAT将需要手动识别数百个功能。我正在寻找一个自动化的过程。

– Eli K
2015年6月1日在21:50



我没有承诺解决您的问题;我回答了你问的问题。问:“如何在不编译的情况下从源代码创建函数签名?”答:“如果您无法编译源代码并且无法(或不想)标识IDB中的库函数,那么您将无法为该库创建传统的IDA签名文件。码。”

–詹森·格夫纳(Jason Geffner)
2015年6月1日在21:59