Ну мне интересно глянуть, парсит ли его парсер пдбшки, которые генерит 2008 студия. Там недокументированный формат в некоторых местах, и не разреверсишь особо.
Да, парсит, причем без ошибок, которые выдает загрузчик пдб инфо в ИДА. Но здесь нужно определить, какую инфу мы хотим получить: основные два типа информации в пдб - symbol info и type info. Type info у меня парсится 100%, не встречал в существующих типах никаких новых полей по сравнению с CV NB 10-11, да в VC 2008 появились некоторые новые типы, но использование их в пдб пока не встречал. Что касается symbol info, то основная требуемая инфа берется вся, остается только несколько недокументированных символов, но они непринципиальны для задачи реверсинга.
Вообще-то правильный путь - использовать это. Но насколько оно полно в описаниях судить сложно, например, полный перечень всех символов и типов у меня (откуда взял не помню) Код (Text): enum vSymTag { SymTagNull, //+ SymTagExe, SymTagCompiland, //+ SymTagCompilandDetails, SymTagCompilandEnv, SymTagFunction, //+ SymTagBlock, //+ SymTagData, //+ SymTagAnnotation, SymTagLabel, //+ SymTagPublicSymbol, //+ SymTagUDT, //+ SymTagEnum, //+ SymTagFunctionType, //+ SymTagPointerType, //+ SymTagArrayType, //+ SymTagBaseType, //+ SymTagTypedef, //+ SymTagBaseClass, //+ SymTagFriend, //+ SymTagFunctionArgType, //+ SymTagFuncDebugStart, //+ SymTagFuncDebugEnd, //+ SymTagUsingNamespace, SymTagVTableShape, //+ SymTagVTable, //+ SymTagCustom, SymTagThunk, //+ SymTagCustomType, SymTagManagedType, SymTagDimension, SymTagMethod, //+ SymTagNested, //+ SymTagSpecialType //+ }; //+ помечены реализованные на две еденицы больше, чем приведен в VC 2010
Vam Ну тогда расскажите как парсить GSI/PSGSI. У меня там оффсеты левые совсем. + там используется сжатие, что недокументировано нигде, случайно обнаружил реверсингом. Или ты просто поток с символами читаешь? Так вот там оффсеты левые для дллок. Не совпадают с адресами функций. А для ехе все совпадает. Причем только системные пдб, те, что я сам собираю, парсятся нормально. Да если бы, мне в ядре пдб парсить надо.
Я читаю пдб директориями с учетом их вложенности и вызова других пдб, на саму пдб выхожу через исполняемых файл - его дебаг директорию. насчет левости офсетов не замечал, пока всё совпадало.
Ваял недавно прогу (о чем тему поднимал) PDB -> MDB как сорцы найду выложу. Пока что некогда. ADD: вроде вот