IDA Pro 可以自动.pdb从符号服务器下载和加载文件。现在我想编写一个 IDAPython 插件来从.pdb文件中获取一些数据。
但是我不知道如何获取已加载.pdb文件的文件路径。
我可以使用 IDAPython 获得它吗?
IDA Pro 可以自动.pdb从符号服务器下载和加载文件。现在我想编写一个 IDAPython 插件来从.pdb文件中获取一些数据。
但是我不知道如何获取已加载.pdb文件的文件路径。
我可以使用 IDAPython 获得它吗?
我刚刚检查了 idafree 76,但我没有看到 idc 函数来获取 pdb 文件名,
但正如我评论的那样,它打印在标题中,您可以复制粘贴它
.text:0000000140001000 ; Alignment : default
.text:0000000140001000 ; PDB File Name : C:\xx\Desktop\mulcall\mcall.pdb
或者您可以在.rdata部分 IMAGE_DEBUG_DIRECTORY 中搜索 string(".pdb") 路径通常可用的文本
使用如下 idc 函数
auto cline;
cline = find_text(MinEA()+0x1000,1,0,0,".PDB");
jumpto(cline);
Message("%x\t%s\n" , cline , get_curline());
这应该产生
14000206c .rdata:000000014000206C text "UTF-8",'C:\xxx\Desktop\mulcall\mcall.pdb',0 ; PdbFileName
请注意,这是来自 debug 目录,在恶意软件、剥离、公开等、操纵的二进制文件中可能不正确。
例如,公共 pdb 可能会返回
1802420f0 .rdata:00000001802420F0 text "UTF-8", 'kernelbase.pdb',0 ; PdbFileName
在这种情况下,如 ms 二进制文件的公共 pdbs 最佳选择是使用 dumpbin /pdbpath
dumpbin /pdbpath c:\Windows\System32\KernelBase.dll
Dump of file c:\Windows\System32\KernelBase.dll
File Type: DLL
PDB file found at 'f:\symbols\kernelbase.pdb\993F0EEA8C3C260F6D52724A7CA166601\kernelbase.pdb'