在IDA中开发和调试自己的代码时如何避免数据库/代码不匹配?

逆向工程 艾达 C++ 发展
2021-06-22 19:22:10

这似乎是一个非常基本的用例,我无法让它正常工作。我正在 Visual Studio c++ 中开发我自己的测试应用程序。我想通过几个 IDA 调试会话来测试它。每次我修改代码、重新编译并尝试调试它时,IDA 都会警告我输入已更改,我应该重新加载二进制文件,我通过“文件 -> 加载文件 -> 重新加载输入文件”来执行此操作。然后我转到“选项 -> 常规 -> 分析 -> 重新分析程序”。

这是做事的正确方法吗?

我也很担心,因为有时这个循环会失败,因为函数窗口会在整个反汇编过程中显示许多(更多)带有(空)名称和“sp 分析失败”的函数。然后我必须关闭该项目并开始一个新项目,这很烦人。

欢迎任何有关如何加快整个过程的指示。请注意,与删除与它们相关的问题相比,我对删除错误消息的兴趣要小得多。

1个回答

“重新加载输入文件”仅刷新字节值,不会重新分析文件。因此,例如,如果您添加了一些函数并移动了代码,则可能会干扰现有的分析。

如果您实际上不需要分析二进制文件而只是调试它,您可以在所谓的“即时调试”模式下使用 IDA。打开 IDA 而不加载任何东西,然后使用 Debug-Run 菜单运行你编译的程序。IDA 将启动该过程,并且只进行最少的分析以显示当前正在执行的代码。停止调试器后,这种只执行的分析将被丢弃,下次运行时,将再次使用磁盘中更新的二进制文件(如果已更改)。