如何使用 IDA Pro 从硬盘加载 pdb 文件?

逆向工程 艾达 数据库
2021-06-15 17:29:19

我在谷歌上看到的所有答案都是关于如何从在线服务器加载 PDB 文件的。但是我有一个正在调试的 exe。这是我自己的exe。我想调试它的唯一原因是,当它对 user32.dll 进行一些调用时,我可以逐步了解发生的情况。

我的 EXE 是用 c# 制作的,在 Visual Studio 中,它是 x64 和“调试”版本,带有“完整”pdb 输出。所以 PDB 就在同一个文件夹中,与 exe 同名,紧挨着 exe。

但是当我将 EXE 加载到 IDA 时,它不会加载 PDB。相反,它会尝试加载不同的 PDB:

[autohidden] The input file was linked with debug information
 and the symbol filename is:
"D:\workspace\_work\1\s\artifacts\obj\win-x64.Release\corehost\cli\apphost\standalone\Release\apphost.pdb"
Do you want to look for this file at the specified path
and the Microsoft Symbol Server?
 -> No

我不知道这个“apphost.pdb”是什么,“D:\workspace...etc”这个文件夹名肯定不在我的电脑上,没有这样的文件夹或类似的东西。我什至没有驱动器 D。我的 exe 名为 Resolution_dev.exe,正确的 pdb 是 Resolution_dev.pdb。所以我不知道它为什么要寻找 apphost.pdb。

但此外,正如您在调试输出中看到的那样,它是 [autohidden] 并在末尾自动以“-> 否”回答问题。所以它甚至不问我这个问题,并自动跳过 PDB 负载。

而且我在 IDA 顶部的工具栏中找不到任何地方,它可以让我从文件中手动加载 PDB。正如我所说,我在谷歌上找到的所有信息都是关于从在线服务器加载 pdb 的。我找不到任何关于如何简单地从驱动器加载一个的信息。

3个回答

要么将 PDB 放在与可执行文件相同的文件夹中,要么使用File->Load file->PDB file(在 IDA 中打开 .EXE 之后)从磁盘上您喜欢的任何路径加载 PDB。

如前所述,要为您自己的 DLL加载 PDB,使用File -> Load file -> PDB file

要从公共 PDB 服务器加载Microsoft DLL的 PDB:

  1. _NT_SYMBOL_PATH按照MSDN 上的描述设置环境变量
    例如,要srv*C:\symbols*https://msdl.microsoft.com/download/symbols
    创建C:\symbols
    重新启动 IDA。

  2. 在 IDA 中,转到File -> Load file -> PDB file,然后选择需要PDB二进制(EXE/DLL) 文件。IDA 会自动下载、缓存并使用相应的 PDB 文件。

正如其他人所提到的,如果您想在初始分析后加载 PDB 文件 → 加载文件 → PDB 文件对话框会起作用。但是,我试图在它之前加载 PDB 并遇到了与自动隐藏对话框相同的问题。

要修复它,您需要选择Window → Reset hidden messages除非当前加载了反汇编,否则此选项呈灰色显示。之后,您可以再次开始反汇编文件,PDB 选择对话框将正常出现。