0

我目前正在对似乎是静态编译的文件进行逆向工程,但是 IDA Pro 没有收到任何签名!我觉得我花了很多时间来逐步了解 IDA 应该识别的功能,但事实并非如此。

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

4

3 回答 3

1

IDA 是一个很棒的反汇编程序,但它并不完美。某些代码,尤其是未行列/优化的代码,根本无法以自动方式分解为连贯的函数。这就是编译过程中发生的事情——连贯的代码被翻译成机器理解的指令,而不是人类理解的指令。IDA 可以做出猜测和估计,但它不能做所有事情。逆向工程总是需要一些人工解释来填补空白。

于 2012-05-05T17:39:06.303 回答
0

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

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

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

于 2012-05-07T10:55:43.873 回答
0

这个问题很笼统,但我会尽力给出我的意见。

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

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

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

于 2021-03-17T19:08:11.357 回答