Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Estrutura básica de um Portable Executable(PE)

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Estrutura básica de um Portable Executable(PE)

    Estrutura básica de um Portable Executable(PE) ou EXE, espero que gostem

    O que é um Portable Executable (PE)?
    Portable Executable (PE) é um formato de arquivos executáveis, código objeto e DLLs usado no Windows.

    O formato PE é basicamente uma estrutura de dados que encapsula a informação necessária para que o
    carregador do sistema Windows possa manipular o código executável que está empacotado. Isso inclui
    biblioteca dinâmica de referências para linking, exportação e importação de API, dados de
    administração de recursos, dados de thread-local storage (TLS).


    Estrutura:
    • Cabeçalho MZ do DOS
    • Fragmento (stub) do DOS
    • Cabeçalho do Arquivo
    • Cabeçalho Opcional
    • Diretório de Dados
    • Cabeçalhos das Seções
    • Seção 1
    • Seção 2
    • ...
    • Seção I




    Explicação das Estruturas:

    • Cabeçalho do DOS: Os dois primeiros bytes é para a assinatura do DOS, fomando a palavra MZ(sigla inicial de um
    dos idealizadores do MS-DOS). Logo após vemos o fragmento da stub do DOS, ela é responsavel para avisar ao usuário
    de que o aplicativo não pode ser executado em modo texto.

    • Cabeçalho Arquivo: Já o Cabeçalho Arquivo ele é bastante importante, nele está contido todas as informações básicas necessárias
    para que o arquivo funcione. Nele está contido o número de seções, tamanho das seções e onde inicia essas
    seções, se é um exe ou dll, onde inicia a execução do código e muitas outras informações. As informações podem
    variar de exe para exe, dependendo do grau de complexidade do aplicativo, nele também está contido a assinatura
    do cabeçalho PE.

    • Cabeçalho Opcional: Uma parte interessante do Cabeçalho Opcional é o array indicativo dos diretórios de dados (data directories).
    Estes diretórios contêm ponteiros para dados residentes nas seções (sections). Se, por exemplo, um binário
    tiver um diretório de exportação (export directory), existe um ponteiro para este diretório no array, sob a
    denominação IMAGE_DIRECTORY_ENTRY_EXPORT, que apontará para uma das seções.

    • Cabeçalho de seções: Cabeçalho de seções é a parte mais interessanete, ele é responsável pela execução do programa, os outros cabeçalho
    servem para localizar o conteúdo. Lembrando, os nomes não tem aver com o conteúdo de cada seção, por exemplo, na
    seção ".dados" podem muito bem conter o código do executável e vise versa.

    • Seções: Depois desses cabeçalhos vem as seções, com os dados nus(raw data), elas estão alinhadas em FileAlignment bytes,
    ou seja, o arquivo vai ter que obter o tamnho exato do FileAlignment. As seções estão são alinhdas de acordo com
    o SectionAlignment. Entendeu? Não né? Vou tentar explicar de novo, se o FileAlignment for de 512 bytes, tamanho
    do aplicativo vai ser multiplicos de 512 bytes, pode verificar vendo o tamanho de um aplicativo.
    Algumas seções mais comuns de um exe:
    • Seção de código - Code Section ( .text ou .code )
    • Seção de recursos – Resource Section ( .rsrc )
    • Seção de dados – Data Section ( .data )
    • Seção de exportação – Export data section ( .edata )
    • Seção de importação - Import data section ( .idata )
    • Informações de debug - Debug information ( .debug )

    Como uma imagem fala mais do que mil palvras, né? Deixo uma Imagem bacana para vocês, explicando tudo aquilo!





    Att #M0rph....


    Referências:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    "Nunca desista de seus sonhos. Desisti de seus sonhos é abrir mão da felicidade."
    (Augusto Cury)



    Meu Blog... http://www.lab-infor.blogspot.com
    Meu canal do Youtube... http://www.youtube.com/user/rodrigo32323232
X
Working...
X