Posso editar os bytes de cabeçalho de um arquivo .EXE, mas ainda assim manter um programa em funcionamento?

2

Como sabemos, os arquivos exe geralmente começam com 4D5A ou 'MZ' em ASCII. Como eu mudaria o cabeçalho enquanto ainda permitia que o arquivo funcionasse normalmente?

Agora estou vendo o arquivo exe do ccleaner. Infelizmente eu não tenho 10 rep, então eu não posso postar uma captura de tela dele.Mas o ASCII à direita diz que o programa não pode ser executado em ASCII, portanto, tornando o 4D5A inútil? Então, tecnicamente, eu poderia mudar o 4D5A para outra coisa e ainda funcionaria?

Se algum dos caras da velha escola estiver aqui, tanta informação sobre o 'DOS MZ' seria muito apreciada.

Esta é a imagem que eu estava olhando:

    
por BubbleMonster 02.08.2013 / 20:32

1 resposta

3

How would I change the header whilst still allowing the file to work as normal?

Você não pode!

Existe uma razão pela qual a cadeia MZ (16-bits representando 0x5A4D ) é referida como um número "mágico" e, de facto, é requerida de acordo com a especificação EXE / PE (com raízes desde Executáveis no formato DOS). O layout de todos os executáveis portáteis modernos é exibido da seguinte forma ( ref ):

Em este artigo do MSDN sobre o formato Executável Portátil, o cabeçalho do MS-DOS é detalhado :

The MS-DOS Header

Every PE file begins with a small MS-DOS® executable. The need for this stub executable arose in the early days of Windows, before a significant number of consumers were running it. When executed on a machine without Windows, the program could at least print out a message saying that Windows was required to run the executable.

The first bytes of a PE file begin with the traditional MS-DOS header, called an IMAGE_DOS_HEADER. The only two values of any importance are e_magic and e_lfanew. The e_lfanew field contains the file offset of the PE header.

The e_magic field (a WORD [NB: 16-bits]) needs to be set to the value 0x5A4D. There's a #define for this value, named IMAGE_DOS_SIGNATURE. In ASCII representation, 0x5A4D is MZ, the initials of Mark Zbikowski, one of the original architects of MS-DOS.

Para mais informações sobre o formato Windows PE / EXE, eu recomendo dar uma olhada na seção Arquivos executáveis do Windows da desmontagem do Wikilivros x86 . Ele contém uma ampla variedade de informações de baixo nível sobre o formato.

    
por 02.08.2013 / 20:43