Windbg如何在众多pdb中找到那个它?
2021-12-06 / Hell
在Windows中进行开发的小伙伴们肯定对Windbg毫不陌生。在查找符号的时候经常看到一个很复杂的路径:e:\symbolcache\wntdll.pdb\96EF4ED537402DAAA51D4A4212EA4B2C1\wntdll.pdb
,我们查看e:\symbolcache\wntdll.pdb
路径结构:
1 | E:. |
发现是不同版本的wntdll.pdb
,也就是当想要某pdb时,只要去指定目录下就能找到对应的pdb文件。
我们在Windbg中使用!sym noisy
指令开启详细模式。并使用.reload /f ntdll.dll
指令观察Windbg的查找流程:
1 | 0:043> .reload /f ntdll.dll |
可以看到SYMSRV直接就打印出了96EF4ED537402DAAA51D4A4212EA4B2C1
而非通过枚举:
- 311630463D61412A89CC03B6FDBEC5CA2\wntdll.pdb
- 7EDD56F06D47FF1247F446FD1B111F2C1\wntdll.pdb
- B5E8CE18E962F8DA78E5827CDFA3599E1\wntdll.pdb
- 96EF4ED537402DAAA51D4A4212EA4B2C1\wntdll.pdb
- B6EB6DFF017F36A18E8034D67B4DA9941\wntdll.pdb
- D0427A66DFB9499890CEF7A97A667E221\wntdll.pdb
依次分析pdb来分析哪个pdb才是符合的!
所以,可以分析出二进制模块(exe\dll)可以通过一种方法得出96EF4ED537402DAAA51D4A4212EA4B2C1
。
那是如何计算出96EF4ED537402DAAA51D4A4212EA4B2C1
呢?
尝试了多种摘要算法都没能得出结果。最后发现是直接写入在PE结构中:
所以只需要去指定路径下就能快速找到想要的pdb,真的是非常方便✅✅✅
PermaLink:
https://lazywang.life/2021/12/06/How-Windbg-Seleclt-Pdb/