6

Where I can find such information? I've already read the undocumented windows 2000 secrets explanation of it but it isn't complete. For example the 3rd stream format isn't explained. I have looked at this, where some general info about the streams is given but nothing more.

  • Thanks for your answers! I looked at the links given. It really seems that this file format isn't very documented. I read this article and I'm wondering where this "allocation bit array" is stored in the file? – sasho648 Aug 1 '13 at 21:16
  • 1
    If anyone is still looking for information I've nailed down reading and writing PDB 7.0 (MSF 7.00). The code is much clearer than other projects so you might want to refer to it: github.com/jcdickinson/symblr/tree/master/Symblr.Core/Symbols/… – Jonathan Dickinson May 20 '15 at 22:06
9

Here is something directly from Microsoft.

https://github.com/Microsoft/microsoft-pdb

  • Straight from the horse's mouth, as the saying goes: "Open source, from Microsoft with love". Well found! (How did you come across it?) – usr2564301 Oct 30 '15 at 22:28
  • @usr2564301 probably he read some news about that when Google started working on switching to Clang – phuclv Mar 7 '18 at 5:41
4

Since the format is internal to Microsoft you likely won't find any official documentation. The best bet is various reverse engineering efforts on the format:

P.S. I just remembered that there is an open-source Microsoft project called "CCI Metadata" which does provide some C# code for reading and writing PDB files. Not sure about the legality of using it to make your own PDB parser, but it does provide information which is probably as the close to official docs as you can get.

4

This is what I've found:

PdbXtract is not a pure PDB parser. It only extracts type information using Microsoft’s DebugInterface Access (DIA) COM. If you are interested in just parsing/dumping raw PDB information, there are a few alternatives out there to DIA, including Volatility’s open source pdbparse (http://code.google.com/p/pdbparse/) or the PDB utility that comes with the Undocumented Windows 2000 Secrets book. However, most of the practical tools I have seen that operate on PDB’s use DIA, including Microsoft’s own Dia2dump, this one http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P and this one http://www.ishani.org/web/articles/obsolete/pdb-cracking-tool/, to name a few. To reiterate, PdbXtract does not parse or capture the wealth of other information available in a PDB, including: functions, debug streams, modules, publics, globals, files, section information, injected sources, source files, OEM specific types, compilands, and others.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.