Descompilação

Abra Ferramentas > Opções (Tools > Options) para configurar a descompilação. Ao comparar configurações interativamente, use Descompilação Rápida sem cacheamento; caso contrário, processe o arquivo novamente após alterar uma opção.

Configurações de descompilação: depuração, fluxo de controle, protótipos e endereços

Mostrar comandos de debug (Show debug commands)

Para P-Code do VB clássico, inclui operações do compilador e do depurador que seriam omitidas da lista de alto nível. Ative-o ao inspecionar a sequência de instruções subjacente em vez de apenas a lógica do programa reconstruída.

Processar blocos If ... End If (Código Nativo) (Process If ... End If blocks (Native Code))

Reconstrói saltos condicionais reconhecidos de Código Nativo como blocos If...End If. Desative-o quando precisar inspecionar o padrão de ramificação original ou investigar um procedimento cuja estrutura parece incorreta.

Blocos 'Else' (Process 'Else' blocks)

Utiliza heurísticas adicionais para distinguir ramos Else de condições aninhadas e transições GoTo. Para Código Nativo, isso requer processamento de blocos If. Mantenha-o ativado para leitura normal; compare com ele desativado quando um ramo reconstruído for ambíguo.

Análise protótipos (Analyze prototypes)

Realiza análise heurística preliminar dos argumentos e valores de retorno de procedimentos. Isso é particularmente útil na Descompilação Rápida: funções e procedimentos privados em módulos padrão podem carecer de metadados de assinatura explícitos. A análise preliminar leva tempo adicional, mas evita tratar uma chamada apenas de acordo com o conteúdo da pilha atualmente conhecido. Uma assinatura heurística ainda é uma inferência, especialmente quando metadados, tipos externos ou código estão incompletos.

Adicionar Endereços (Add Addresses)

Exibe endereços virtuais ao lado das instruções reconstruídas. Mantenha-o ativado para correlacionar código com desassemblagem, bytes do arquivo e achados de outras ferramentas. Também é necessário para Copiar para disassembler (Copy to disassembler) para mesclar instruções de alto nível com seus equivalentes de baixo nível. O Desassemblador sempre exibe endereços independentemente desta configuração.

Entendendo a reconstrução de Código Nativo

O motor de Código Nativo reconhece padrões Select Case suportados, acesso a arrays multidimensionais, chamadas COM e operações de runtime do VB. A gestão de erros pode ser reconstruída como On Error Resume Next, On Error GoTo e On Error GoTo 0. Otimização do compilador e falta de informações de tipo ainda podem limitar o resultado; inspecione a desassemblagem quando a saída de alto nível estiver incompleta.

A versão 26.2 expandiu a tipagem Variant, leituras e escritas de SafeArray multidimensionais e reconstrução VarPtr para elementos de array. A saída pode identificar uma referência a um array como SafeArray, refletindo a estrutura de runtime reconhecida pelo motor de análise. Isolamento do estado de ramificação e análise de variáveis temporárias também melhoram a reconstrução de código If/Else complexo. A versão 26.5 melhora ainda mais o tratamento de Select Case e funções de runtime VB5/VB6.

Informações de tipo COM e ActiveX

O VB Decompiler primeiro utiliza sua base de conhecimento interna para interfaces conhecidas. Para um objeto COM externo desconhecido, ele pode resolver identificadores de biblioteca, classe e interface através do registro do sistema e analisar a biblioteca de tipos DLL/OCX correspondente. Isso fornece assinaturas de método e propriedade, incluindo tipos de interface retornados, para chamadas early-bound e late-bound suportadas.

Se uma biblioteca de tipos necessária estiver ausente ou seu registro não puder ser localizado, algumas chamadas podem permanecer não identificadas, por exemplo como UnkVCall. Dependências faltantes são, portanto, relevantes ao comparar saídas entre máquinas de análise. A base de conhecimento IID expandida inclui automação do Office, ADO/DAO, XML e HTTP, script, shell, mensagens e interfaces de serviço de diretório; isso não implica que toda chamada COM possível possa ser resolvida.

Apenas metadados limitados de UDT sobrevivem em alguns binários VB. O descompilador pode recuperar informações como o tamanho de uma estrutura e a contagem de campos de string sem recuperar o layout completo dos campos originais. Não interprete uma declaração parcial como uma definição completa no nível da fonte.

Reconstrução e otimização .NET

O IL suportado é reconstruído como expressões semelhantes a C# e fluxo de controle. O controle Analisador e otimizador de procedimento (Procedure analyzer and optimizer) no painel principal pode simplificar padrões de loop, condicional, operador e variável temporária suportados. Inspecione o IL e metadados onde um fragmento não suportado ou ofuscado permanece. Este processamento é independente do Ajuda IA (AI Helper).