> For the complete documentation index, see [llms.txt](https://mentebinaria.gitbook.io/engenharia-reversa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mentebinaria.gitbook.io/engenharia-reversa/05-o-formato-pe/cabecalhos/diretorios.md).

# Diretórios de Dados

No final do cabeçalho opcional, mas ainda como parte dele, temos os diretórios de dados, ou *Data Directories*. São 16 diretórios ao todo, mas um executável pode conter somente alguns. Nos concentraremos, nos mais importantes para este estudo inicial. A estrutura de cada diretório de dados é conhecida por IMAGE\_DATA\_DIRECTORY e tem a seguinte definição:

```c
typedef struct _IMAGE_DATA_DIRECTORY {
    uint32_t   VirtualAddress;
    uint32_t   Size;
} IMAGE_DATA_DIRECTORY;
```

Vejamos alguns diretórios importantes neste momento:

## Export Table

O primeiro diretório de dados aponta para a tabela de ***exports***, ou seja, de funções exportadas pela aplicação. Por este motivo, a presença deste diretório (campos *VirtualAddress* e *Size* com valores diferentes de zero) é muito comum em bibliotecas.

O campo *VirtualAddress* aponta para uma outra estrutura chamada EDT (*Export Directory Table*), que contém os nomes das funções exportadas e seus endereços, além de um ponteiro para uma outra estrutura, preenchida em memória, chamada de EAT (*Export Address Table*).

## Import Table

Sendo a contraparte do *Export Table*, o diretório *Import Table* aponta para uma tabela de ***imports***, ou seja, de funções importadas pela aplicação. Tal tabela é chamada de IDT (*Import Directory Table*). Nós a estudaremos em mais à frente.

## Resource Table

Aponta para uma estrutura de árvore binária que armazena todos os *resources* num executável como ícones, janelas e *strings*, principalmente quando o programa suporta vários idiomas.

## Certificate Table

Antigamente chamado de "Security", este diretório contém o endereço da *Certificate Table*, que pode conter um certificado para binários assinados digitalmente.

## IAT

Este diretório aponta para a **Import Address Table**, que veremos em breve.

## CLR Runtime Header

Para binários criados em .NET, há um outro cabeçalho específico que é apontado por este diretório.

A ordem na qual estes diretórios aparecem no arquivo PE é especificada na documentação do formato. Vamos agora para o nosso último cabeçalho, o das Seções.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://mentebinaria.gitbook.io/engenharia-reversa/05-o-formato-pe/cabecalhos/diretorios.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
