Quanta informação os arquivos PDB contém? (C # / NET)
Pergunta
Será que é sábio para redistribuir os arquivos PDB juntamente com uma aplicação comercial?
Ocasionalmente, eu estou usando o rastreamento de pilha para obter um erro mais detalhado relato registros dos aplicativos implementados; pode esta funcionalidade ser alcançado sem depender a esses arquivos?
Além disso, a quantidade de pistas do código-fonte original não esses arquivos contêm? Seria mais fácil fazer engenharia reversa a minha candidatura a usá-lo?
Solução
É basicamente acrescenta informações para:
- Todos não públicas tipos, as interfaces, estruturas, aulas
- As variáveis ??locais em funções
- nomes de arquivo de origem para o código relevante e números de linha correspondentes no código-fonte.
que todas as marcas combinadas engenharia reversa muito fácil para código nativo.
Felizmente, você pode criar uma versão simplificada dos seus arquivos PDB que contém apenas informações públicas com / PDBSTRIPPED parâmetro.
Oh você editado para adicionar C # /. NET, então eu não tenho certeza se "PDBSTRIPPED" é aplicável. No entanto aplicações .NET são muito fáceis de engenharia reversa mesmo sem qualquer informação símbolo. Eu não me importaria de incluí-los em um projeto .NET.
Outras dicas
Você pode tentar usar dia2dump para olhar para o conteúdo.
Os ficheiros.pdb gerenciados conter as seguintes informações:
- Os nomes de todas as variáveis ??locais
- Os nomes de todos os arquivos de código fonte e o mapeamento de instruções IL em linhas dentro desses arquivos.
Tudo o resto está contida no próprio binário, incluindo os nomes de todos os tipos, membros e argumentos da função.
Os PDB-arquivos também incluir todos os comentários de seus arquivos de origem. Então, com E PDB-arquivo EXE é possível gerar um 1:.-1 cópia do seu código fonte original