O que é o formato de ficheiro EXE?
Um arquivo com a extensão .exe contém um programa compilado e seus recursos para Microsoft Windows, DOS ou (historicamente) OS/2. Arquivos .exe podem armazenar aplicativos, jogos, instaladores ou malware. Eles podem ser iniciados a partir da linha de comando ou via GUI através de um clique duplo. Os arquivos .exe são dependentes do sistema - eles armazenam dados em formato binário e sua assinatura interna determina o subtipo do executável.
Cada .exe começa com a assinatura mágica de dois bytes MZ (hex 4D 5A) no deslocamento 0, nomeada em homenagem ao seu co-designer Mark Zbikowski. Executáveis modernos do Windows carregam adicionalmente uma assinatura PE\0\0 no deslocamento armazenado na posição 0x3C, confirmando o arquivo como um Portable Executable. Existem cinco subformatos históricos principais de .exe:
MZ- Formato de 16 bits nativo do DOS.NE- Formato «New Executable» de 16 bits usado pelo Windows de 16 bits (1.x-3.x) e OS/2 1.x; não pode rodar no DOS puro, mas é suportado por camadas de compatibilidade do Windows de 32 bits e OS/2.LX- Formato de 32 bits para OS/2 2.0 e posterior.LE- Formato de 16/32 bits usado principalmente para drivers VxD em sistemas Windows antigos (lançados antes do ano 2000).PE- «Portable Executable», abrangendo as versões de 32 bits (PE32) e 64 bits (PE32+); introduzido com o Windows NT e o formato dominante hoje. Variantes ARM e ARM64 estendem o PE para dispositivos Windows em ARM.
Arquivos .exe podem armazenar recursos como ícones, diálogos, informações de versão, áudio e manifestos de aplicativos. É importante lembrar que nem todos os tipos de arquivos .exe podem ser executados em um determinado sistema, pois tais arquivos são dependentes da plataforma. Para rodar um .exe em um sistema operacional diferente, é necessária uma ferramenta de emulação apropriada, como Wine ou CrossOver. Arquivos autoextraíveis também usam a extensão .exe, começando com um stub MZ/PE e carregando internamente um arquivo ZIP, 7z ou CAB.
Arquivos .exe modernos do Windows geralmente carregam uma assinatura de código Authenticode para verificar a identidade do editor, e o sistema operacional impõe recursos de segurança, incluindo ASLR, DEP/NX e Control Flow Guard. As importações de arquivos .dll são resolvidas no momento do carregamento pelo carregador PE do Windows. Arquivos .exe de fontes desconhecidas ou não confiáveis devem ser manuseados com cuidado, pois apresentam risco de infecção por malware se executados.
Segurança e proteção
RISCO: HIGHO EXE é o vetor número 1 de malware no Windows: ele pode executar qualquer código com seus privilégios, portanto, vírus, trojans, ransomware e «cracks/keygens» são tipicamente arquivos EXE. Checklist de segurança: execute apenas EXEs do fornecedor oficial ou de uma loja confiável; antes de executar, verifique a assinatura digital (botão direito → Propriedades → Assinaturas Digitais) - softwares legítimos são assinados digitalmente e o nome do editor corresponde; seja muito suspeito de EXEs que chegam por e-mail, chat ou acompanhados de downloads «gratuitos». Avisos do Windows SmartScreen e de antivírus em um EXE não reconhecido devem ser levados a sério. Para inspecionar um download sem executá-lo, abra-o como um arquivo compactado no 7-Zip ou escaneie-o no VirusTotal. Cuidado com extensões duplas como «fatura.pdf.exe» e EXEs disfarçados com ícones de documentos.
Detalhes do formato
em resumoProgramas que abrem arquivos EXE
Detalhes técnicos
especificação profunda| Magic bytes | MZ (4D 5A) no deslocamento 0; a assinatura PE PE\0\0 (50 45 00 00) aparece no deslocamento armazenado no stub MZ em 0x3C |
| Tipo MIME | application/vnd.microsoft.portable-executable |
| Suporte de arquitetura | x86 (32 bits), x86-64/AMD64 (64 bits), ARM, ARM64; a máquina de destino é codificada no campo Machine do cabeçalho de arquivo COFF |
| Variantes de subformato | MZ (MS-DOS 16 bits), NE (Windows 16 bits/OS/2 1.x), LX (OS/2 2.x 32 bits), LE (drivers VxD), PE32 (Windows 32 bits), PE32+ (Windows 64 bits) |
| Layout de seção PE | As seções incluem .text (código executável), .data (dados inicializados), .rdata (dados somente leitura), .rsrc (recursos) e .reloc (relocações de base) |
| Ponto de entrada | Endereço virtual relativo (RVA) da primeira instrução, armazenado em AddressOfEntryPoint no cabeçalho opcional PE |
| Tabela de importação | Lista as DLLs e exportações de funções nomeadas ou ordinais que o binário requer; resolvida pelo carregador do Windows na inicialização |
| Tabela de exportação | Opcionalmente expõe funções ou símbolos de dados para uso por outros executáveis ou DLLs; presente principalmente em DLLs, mas ocasionalmente em EXEs |
| Seção de recursos (.rsrc) | Incorpora ícones, bitmaps, diálogos, tabelas de strings, informações de versão e manifestos de aplicativos em uma árvore tipada/nomeada/marcada por idioma |
| Assinatura de código | Assinatura digital Authenticode (PKCS#7/CMS) armazenada no Diretório de Segurança; validada pelo Windows SmartScreen, UAC e pelo kernel no momento do carregamento do driver |
| Mitigações de segurança | Sinalizadores DllCharacteristics no cabeçalho opcional habilitam ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH e High-Entropy VA para binários de 64 bits |
| Checksum PE | Campo CheckSum de quatro bytes no cabeçalho opcional; imposto pelo carregador do Windows para drivers de modo kernel e arquivos de sistema |
| Tipos de subsistema | Windows GUI, console Windows (CUI), nativo (modo kernel), aplicativo EFI, driver de serviço de boot EFI, driver de tempo de execução EFI |
| Uso de arquivo autoextraível | Pacotes SFX incorporam um payload ZIP, 7z ou CAB após o stub PE; o arquivo é executado como um executável normal e descompacta automaticamente |
| Lançado | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Especificação | learn.microsoft.com |