É verdade que todo o tamanho binário do PE é um múltiplo de 256 bytes?


1

Revisei o tamanho de dois binários do PE, ambos com um múltiplo de 256 bytes, mas não tenho certeza se é o padrão do PE ou apenas mantemos o Windows?


Para satisfazer os curiosos, "PE" é "Executável Portátil" .
— Dennis Williamson

Respostas:


2

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.


2

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.


Quero dizer Tamanho, não Tamanho no Disco. E eu estou falando sobre o PE binário no Windows.
— ganho

Que tipo de arquivo você está falando não importa, o que eu disse é válido para todos os arquivos, embora não seja relevante, nesse caso. Eu duvido muito que o formato do arquivo exija um tamanho múltiplo de 256, mas não consigo encontrar uma fonte para me fazer backup no momento.
— DMA57361

Após uma rápida pesquisa na web, não consigo encontrar nenhuma indicação de que isso seja uma restrição ao tamanho do arquivo. Como um rápido contra-argumento que acabei de examinar no meu Office 2003 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.
— DMA57361
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.