IDA没有识别静态编译的函数

时间:2012-05-05 05:26:51

标签: delphi reverse-engineering malware ida

我目前正在对一个似乎是静态编译的文件进行逆向工程,但是IDA Pro没有接收到任何签名!我觉得我花了很多时间来完成IDA应该认可的功能,但它们不是。

无论如何,也许我错了......有没有人有任何想法?有没有人遇到过这个?

3 个答案:

答案 0 :(得分:1)

IDA是一个伟大的反汇编程序,但它并不完美。某些代码,尤其是无衬里/优化代码,根本无法以自动方式分解为相干函数。这是在编译期间发生的事情 - 连贯的代码被翻译成机器理解的指令,而不是人类。 IDA可以做出猜测和估计,但它不能做任何事情。逆向工程总是需要一些手工解释来填补空白。

答案 1 :(得分:0)

如果IDA无法识别编译器(例如,启动代码中有一些更改),则不会自动应用签名。如果IDA根本不知道这个编译器,它将没有任何签名。所以:

  1. 如果它有签名但编译器未被自动识别,请手动应用它们。对于Delphi / C ++ Builder,请尝试使用b32vcl或bds。

  2. 如果它没有此编译器/库的签名,您可以使用FLAIR工具自行创建它们(假设您可以访问原始库)

答案 2 :(得分:0)

这个问题很广泛,但我会尽量发表我的意见。

如果问题是 IDA 没有正确识别 Delphi,那么您应该尝试其他软件。有一个很好的工具叫做 IDR (Interactive Delphi Reconstructor),但是请记住,它会在反汇编之前运行该软件,并且您不应该在您的 PC 上运行任何不可信的程序(尝试安装虚拟机)

否则,如果问题是关于 IDA 本身,那么…… IDA 根本就不是完美的,所以它需要一个逆向工程师来运行它,这意味着你必须静态识别一些代码、堆栈指针、变量等等。如果涉及到 Hex-Rays 反编译器,还有更多的东西需要寻找。例如,它可以识别函数的不正确约定,您必须更正它,否则它可以创建太多应该手动映射的变量。

还有一些 IDA 调情函数的数据库可能对您有用。 https://github.com/Maktm/FLIRTDB