我在使用IDA Pro / Hex-Rays及其内置的FLIRT签名执行Windows EXE文件的标准反编译时遇到一些问题。

许多标准C ++函数都无法识别出这样的问题,例如:rand,memset等。我尝试反编译的二进制文件会自动检测为已使用Visual C ++进行了编译。 .EXE:

Plan  FLIRT signature: Microsoft VisualC 2-11/net runtime
autoload.cfg: vc32rtf.sig autoloads mssdk.til

Type library 'mssdk' loaded. Applying types...
Types applied to 302 names.

Type library 'vc6win' loaded. Applying types...
Types applied to 1 names.

Using FLIRT signature: Microsoft VisualC 2-11/net runtime


但是当我转到应用库模块列表(“视图”>“打开子视图”>“签名”)时,我看到vc32rtf签名具有匹配的1061个功能,但看起来好像这些文件没有在反汇编中正确映射/重命名,或者其他原因正在影响其识别功能的能力。似乎有所改变。

如果有用,我正在寻找的二进制文件适用于Windows的Reflector 1.5.0,以及一些实用程序我可以看到的身份不明的部分是:

#1 楼

在此处阅读:
https://www.hex-rays.com/products/ida/tech/flirt/index.shtml

我认为他们在最新版本中对FLIRT系统进行了大修。
总体来说还不错,但是还有很多改进的空间。
有点像“在大海捞针”。

很烦人当FLIRT命名了这么多假阳性时。
它假定一个函数与
函数的前几个字节中的部分签名匹配相匹配。请注意,根据构建选项的不同,库函数可以是静态的,使用DLL的或内联的,加上生成的代码还可以取决于优化设置(因此,符号不匹配)。除FLIRT之外,还有一个更严格的系统。

还可能有趣的是“ GraphSlick”,它可以找到内联函数:

”该插件可自动检测内联函数。它突出显示了相似的节点组,并允许您将它们分组,从而简化了复杂的功能。作者提供了随附的演示文稿,解释了插件背后的算法并显示了示例用例。“ com / nihilus / graphslick