
Ferramenta do Windows para despejar arquivos PE de malware da memória de volta para o disco para análise.
Process Dump é uma ferramenta de linha de comando de engenharia reversa para Windows que faz o dump de componentes de malware da memória de volta para o disco para análise. Frequentemente, arquivos de malware são empacotados e ofuscados antes de serem executados para evitar scanners de antivírus; no entanto, quando esses arquivos são executados, eles geralmente desempacotam ou injetam uma versão limpa do código do malware na memória. Uma tarefa comum para pesquisadores de malware ao analisar malware é fazer o dump desse código desempacotado da memória de volta para o disco para varredura com produtos antivírus ou para análise com ferramentas de análise estática como o IDA.
O Process Dump funciona em sistemas operacionais Windows de 32 e 64 bits e pode fazer o dump de componentes de memória de processos específicos ou de todos os processos em execução no momento. O Process Dump suporta a criação e o uso de um banco de dados de hashes limpos, para que o dump de arquivos conhecidos, como kernel32.dll, possa ser ignorado. Suas principais características incluem:
-closemon), onde processos com hooks serão pausados e sofrerão dump pouco antes de terminarem.Estou mantendo uma versão compilada oficial no meu site aqui: https://split-code.com/processdump.html
Você pode baixar a versão compilada mais recente do Process Dump aqui:
Use pd64.exe no Windows de 64 bits (recomendado), ou pd32.exe no Windows de 32 bits. Ambos os binários são autônomos; não é necessário o Microsoft Visual C++ Redistributable.
O Process Dump pode fazer o dump de todo o código desconhecido da memória (-system), fazer o dump de processos específicos, ou monitorar processos e fazer o dump deles antes que terminem.
Em uma estação de trabalho limpa, gere um banco de dados de linha de base com um dos seguintes comandos:
pd64.exe -db genquickpd64.exe -db genExecute a geração do banco de dados e o dump como comandos separados. Para melhor acesso, execute como Administrador. A contagem padrão de workers é 16.
Exemplo de uso:
pd64.exe -systempd64.exe -pid 419pd64.exe -pid 0x1a3pd64.exe -pid 0x1a3 -a 0x401000 -o C:\dumpspd64.exe -p "chrome[.]exe"pd64.exe -p ".*chrome.*"pd64.exe -closemonOpções Gerais de Dump
| Opção | Descrição |
|---|---|
-system | Faz o dump de módulos e código solto que não correspondem ao banco de dados de hashes limpos de todos os processos acessíveis. |
-pid <pid> | Faz o dump de um processo específico. Use decimal ou um prefixo 0x para um PID hexadecimal. |
-closemon | Intercepta o encerramento de processos e faz o dump antes da saída. Use em um ambiente controlado; pressione Ctrl+C para parar. |
-p <regex> | Faz o dump de processos cujo nome completo corresponde a uma expressão regular sensível a maiúsculas e minúsculas. Múltiplas correspondências solicitam confirmação. |
-a <address> | Faz o dump no endereço base especificado. Requer -pid; aceita decimal ou hexadecimal com prefixo 0x. |
-o <path> | Define a pasta de saída (padrão: diretório de trabalho atual). Crie a pasta primeiro; arquivos existentes nunca são sobrescritos. |
Opções do Banco de Dados de Hashes Limpos
Os arquivos do banco de dados ficam por padrão no diretório da aplicação: clean.hashes, entrypoints.hashes e shortentrypoints.hashes.
| Opção | Descrição |
|---|---|
-db gen | Adiciona hashes de processos em execução e arquivos PE recursivamente em %WINDIR%, %USERPROFILE%, C:\Program Files e C:\Program Files (x86). |
-db genquick | Adiciona hashes apenas de processos em execução. Mais rápido que gen, mas menos completo. |
-db add <dir> | Adiciona hashes de arquivos PE do diretório especificado recursivamente, incluindo assinaturas de entrypoint. |
-db remove <dir>, -db rem <dir> | Remove hashes de módulos limpos correspondentes do diretório recursivamente. As assinaturas de entrypoint são mantidas. |
-nr | Desativa a recursão para os comandos de adição/remoção do banco de dados. Não afeta -db gen. |
-db clean | Limpa todos os três bancos de dados, incluindo as assinaturas de entrypoint. |
-db ignore | Ignora todos os três bancos de dados carregados para este dump sem alterar os arquivos. Módulos repetidos ainda podem ser ignorados durante a execução. |
-cdb <filepath>, -c <filepath> | Define o caminho do banco de dados de hashes limpos. |
-edb <filepath> | Define o caminho do banco de dados de hashes de entrypoint. |
-esdb <filepath> | Define o caminho do banco de dados de hashes curtos de entrypoint. |
Opções de Saída
| Opção | Descrição |
|---|---|
-v | Exibe diagnósticos detalhados. |
-nh | Suprime o banner de versão/copyright. |
--help, -help, -h, --h | Exibe a ajuda e encerra. Executar sem argumentos também exibe a ajuda. |
Opções Avançadas
| Opção | Descrição |
|---|---|
-g | Força a geração de cabeçalhos PE de 32 e 64 bits, ignorando os cabeçalhos existentes. |
-eprec | Força a recuperação do entrypoint mesmo que exista um entrypoint válido. A recuperação é heurística; uma busca malsucedida mantém o valor antigo inalterado. |
-ni | Desativa a reconstrução agressiva de imports (ativada por padrão). |
-nc | Desativa o dump e o hashing de loose-code (ativados por padrão). |
-nep | Desativa a recuperação de entrypoint e o hashing de entrypoint em tempo real, sobrepondo-se a -eprec. A geração do banco de dados de arquivos ainda coleta assinaturas de entrypoint. |
-reexec | Preparação experimental para reexecutar dumps. Descarta parte do estado capturado e assume o layout original das seções; não executa o dump nem garante que funcionará. Desativado por padrão. |
-nt | Usa um único worker, equivalente a -t 1. O monitoramento de encerramento ainda tem uma thread de monitoramento separada. |
-t <count> | Define a contagem de workers (padrão 16, mínimo 1) para dump do sistema, geração de banco de dados e monitoramento de encerramento. Dumps diretos por PID/nome permanecem síncronos. O último -t/-nt prevalece. |
| Comando | Descrição |
|---|---|
pd64.exe -db genquick | Cria rapidamente uma linha de base a partir dos processos em execução no momento. |
pd64.exe -system -t 4 -o C:\dumps | Faz o dump de módulos desconhecidos e loose-code com quatro workers em uma pasta de saída existente. |
pd64.exe -closemon | Executa no modo de monitoramento de encerramento. |
pd64.exe -pid 0x18A | Faz o dump de módulos e loose-code de um processo específico. |
pd64.exe -p ".*chrome.*" | Faz o dump de processos com nomes contendo chrome. |
pd64.exe -db gen | Cria uma linha de base mais completa a partir dos processos em execução e pastas comuns. |
pd64.exe -db add C:\baseline -nr | Adiciona arquivos PE de um diretório sem pesquisar subdiretórios. |
pd64.exe -pid 0x1a3 -a 0x401000 | Faz o dump em um endereço específico. Se não existir cabeçalho PE, gera cabeçalhos de 32 e 64 bits. |