Às vezes, as etapas normais de solução de problemas não são suficientes. Podemos precisar ir além - mais como solucionar problemas forenses. Hoje vou escrever sobre uma ferramenta que nos ajudará a fazer isso. Walker de Dependência é uma ferramenta para analisar as dependências de um aplicativo do Windows - como funções, módulos, etc. Ele constrói uma árvore hierárquica de todos os módulos dependentes de um exe, dll, sys, etc.
Walker de Dependência
O Dependency Walker pode ajudá-lo a solucionar problemas de erros de aplicativos, erros de registro de arquivos, violações de acesso à memória e falhas de página inválida.
O programa não apenas carrega os módulos, mas também verifica possíveis erros. De acordo com o arquivo de ajuda, ele executa os seguintes trabalhos:
- Detecta arquivos ausentes. Estes são arquivos que são necessários como uma dependência para outro módulo. Um sintoma desse problema é o erro “A biblioteca de vínculo dinâmico BAR.DLL não pôde ser encontrada no caminho especificado…”.
- Detecta arquivos inválidos. Isso inclui arquivos que não são compatíveis com Win32 ou Win64 e arquivos que estão corrompidos. Um sintoma desse problema é o erro “O aplicativo ou a DLL BAR.EXE não é uma imagem válida do Windows”.
- Detecta incompatibilidades de importação / exportação. Verifica se todas as funções importadas por um módulo são realmente exportadas dos módulos dependentes. Todas as funções de importação não resolvidas são marcadas com um erro. Um sintoma desse problema é o erro “O ponto de entrada do procedimento FOO não pôde ser localizado na biblioteca de vínculo dinâmico BAR.DLL”.
- Detecta erros de dependência circulares. Este é um erro muito raro, mas pode ocorrer com funções encaminhadas.
- Detecta tipos de módulos de CPU incompatíveis. Isso ocorre se um módulo construído para uma CPU tentar carregar um módulo construído para uma CPU diferente.
- Detecta inconsistências de soma de verificação verificando as somas de verificação do módulo para ver se algum módulo foi modificado depois de serem construídos.
- Detecta colisões de módulos, destacando todos os módulos que não conseguem carregar em seu endereço de base preferido.
- Detecta falhas de inicialização do módulo rastreando chamadas para os pontos de entrada do módulo e procurando por erros.
- O Dependency Walker também pode executar um perfil de tempo de execução de seu aplicativo para detectar módulos carregados dinamicamente e falhas de inicialização do módulo. A mesma verificação de erros acima aplica-se também aos módulos carregados dinamicamente.
Por exemplo, eu estava ajudando um cliente no outro dia - ela estava carregando o Internet Explorer, mas o IE continuava travando, sem nenhum erro específico. Nós tínhamos feito a maioria das soluções básicas de problemas, como desabilitar complementos e barras de ferramentas, redefinir o IE para a configuração padrão, etc.Mas ainda continuava travando. Isso significava que um ou mais arquivos necessários para o Internet Explorer serem executados corretamente criavam um problema. É sempre difícil solucionar esses casos, mas com o Dependency Walker, podemos ver se algo está errado em um dos arquivos dependentes.
Então eu carreguei o Internet Explorer no Dependency Walker.
Espero que isso lhe diga como é fácil usar a ferramenta para descobrir possíveis erros de dependência.
Como usar o Dependency Walker
Para usar o Dependency Walker para investigar erros, você pode seguir estas etapas:
- Inicie o Dependency Walker
- Clique em Abrir no menu Arquivo para carregar o arquivo com problema
- No menu Exibir, clique em Iniciar criação de perfil. A caixa de diálogo Módulo de perfil aparece
- Digite quaisquer opções, argumentos do programa, outras opções desejadas e clique em OK.
O Dependency Walker injetará dwinject.dll antes que o erro ocorra e registrará os eventos ocorrendo no momento do erro.
Download do Dependency Walker
Você pode baixar o Dependency Walker de Aqui.