Respostas:
Não consigo encontrar nenhuma indicação na Web de que um binário do PE deva ser um múltiplo de 256 bytes, e isso parece altamente improvável.
Como contraponto, observei a excel.exeminha máquina atual (do Office 2003) que desmente essa teoria.
Tamanho do
arquivo : 10 095 808 (9,62MiB)
Não divisível por 256 (a divisão resulta em 39436.75).
PE binário? Sim:
Inicia com o identificador MZ , a primeira linha (leitura no bloco de notas!) Contém a This program cannot be run in DOS mode.sequência esperada . Esta seção está aqui para desviar com segurança o DOS (como no próprio DOS, não na linha de comando do Windows) de executar o binário sem travar.
Contém o identificador PE em cerca de byte 295 (novamente, lendo no bloco de notas, desculpe qualquer imprecisão). É aqui que a execução será iniciada em todos os sistemas operacionais compatíveis.
PS: A maioria (todos?) Dos executáveis de 32 bits no Windows moderno está no formato PE.
Tamanho ou tamanho no disco ?
Tamanho é o número de bytes que o arquivo realmente contém.
Tamanho no disco é o número de bytes que o arquivo precisa usar na sua unidade. Normalmente, isso é maior porque precisa arredondar para um múltiplo do tamanho do cluster (também chamado de unidade de alocação ) dessa partição / disco. Normalmente, isso é um múltiplo do tamanho de setor do seu disco, que normalmente é de 512 bytes para os HDDs magnéticos mais modernos.
O tamanho do cluster é geralmente o 4KiB por padrão - dependendo do sistema operacional, sistema de arquivos e tamanho do disco - mas geralmente é possível definir o tamanho usado ao formatar o disco / partição.
Consulte este artigo da Microsoft KB para obter informações sobre tamanhos padrão na maioria de seus sistemas operacionais.
Isso significa que um arquivo de 1 byte terá que usar o tamanho de 1 cluster inteiro, porque um cluster pode conter apenas um único arquivo, independentemente de esse arquivo ocupar apenas uma pequena parte do cluster.
excel.exe, ele tem 10095808 bytes de tamanho - ou 9,62 Mb - e não é divisível de maneira uniforme por 256. Ele tem o MZidentificador como o primeiro dos caracteres e o identificador PEexiste a cerca de byte 295 (estava lendo com o bloco de notas; não é a melhor ferramenta para o trabalho, desculpe a imprecisão), por isso tenho certeza de que é um binário de PE, ficaria surpreso se não.