Formatos ShimCache legados: Windows XP, 2003, Vista, 7 e 8

4 min de leitura

TL;DR. Cada geração do Windows reescreveu a estrutura do AppCompatCache. O XP usa um magic 0xDEADBEEF e um registro fixo de 552 bytes; Server 2003, Vista/2008, Windows 7/2008 R2 e Windows 8/8.1 têm cada um seu próprio cabeçalho e layout de entrada. Um parser precisa ramificar pelo magic do cabeçalho — não há um formato único.

A maior parte da documentação de ShimCache cobre o layout do Windows 10/11. Mas quem responde a incidentes ainda encontra controladores de domínio Windows 7, máquinas Server 2008 R2 e o eventual equipamento XP. A estrutura em disco nesses hosts é materialmente diferente. Esta é a referência por versão.

Por que não há um formato único

O ShimCache é uma estrutura interna do Windows sem especificação pública. A Microsoft a remodelou ao longo das versões conforme a infraestrutura de shim evoluía. O nome e o caminho do valor de registro também mudaram. Um parser robusto identifica a versão pelo cabeçalho antes de ler uma única entrada.

Cola por versão

WindowsValor de registroMagic do cabeçalhoForma da entrada
XP (32 bits)…\AppCompatibility\AppCompatCache0xDEADBEEFRegistros fixos de 552 bytes, máx. 96
Server 2003…\AppCompatCache\AppCompatCache0xBADC0FFEEntradas de 24 bytes (x86) / 32 bytes (x64)
Vista / 2008…\AppCompatCache\AppCompatCache0xBADC0FFEComo 2003, flags diferentes
Windows 7 / 2008 R2…\AppCompatCache\AppCompatCache0xBADC0FEECabeçalho de 32 bytes; as entradas carregam o flag de inserção
Windows 8 / 2012…\AppCompatCache\AppCompatCache0x00000080Assinatura de entrada 00ts de comprimento variável
Windows 8.1 / 2012 R2…\AppCompatCache\AppCompatCache0x00000080Assinatura de entrada 10ts

(O layout moderno 10ts/00ts do Windows 10/11 é detalhado à parte.)

XP — o caso atípico

O Windows XP não se parece com nada que veio depois: um magic 0xDEADBEEF, registros de largura fixa de 552 bytes, um limite rígido de 96 entradas e caminhos UTF-16 preenchidos a um comprimento fixo. Também armazenava uma marca de última atualização e um campo de tamanho de arquivo que versões posteriores abandonaram. Se você vê 0xDEADBEEF, está em território XP e nenhuma lógica de parsing moderna se aplica.

Windows 7 — o que você mais vai encontrar

Windows 7 / Server 2008 R2 ainda é comum em IR. Magic 0xBADC0FEE, cabeçalho de 32 bytes e registros por entrada que incluem o caminho, a data de última modificação do arquivo e — singularmente útil — um flag de execução removido a partir do Windows 8. No Windows 7 um flag setado é uma corroboração razoável (não absoluta) de execução; não extrapole isso para sistemas mais novos, como explicado em o ShimCache prova execução.

A transição 8 / 8.1

O Windows 8 introduziu a entrada de comprimento variável com uma assinatura por entrada (00ts), e o 8.1 a elevou para 10ts. É o ancestral estrutural do formato do Windows 10/11, então um parser que lida com 8.1 já está quase pronto para lidar com 10.

Analisá-los sem uma cadeia de ferramentas

O Shimcache Parser detecta automaticamente o magic do cabeçalho e ramifica para o decodificador correto para XP, 2003, Vista, 7, 8, 8.1 e 10/11 — assim você lê uma colmeia SYSTEM legada no navegador sem montar ferramentas antigas. Para a coleta nesses sistemas mais antigos, veja adquirir uma colmeia SYSTEM.

Leitura adicional

Artigos relacionados