Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
Davi

Criar um Protector / Packer

Posts Recomendados

Como é possível criar um Protector / Packer? (tipo o Themida, que protege as  seções, e comprime), ou por exemplo o UPX.

 

Pode ser em qualquer linguagem, quero somente pegar a "base".

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro passo é conhecer o formato do arquivo PE com detalhes. Os compactadores executáveis são notoriamente difíceis de escrever; eles não exigem apenas conhecimento profundo do arquivo executável em si, mas também como ele interage com o sistema operacional durante o carregamento.

Geralmente o packer vai fazer estas coisas:

  • Primeiro, você pegará algum código executável e o transformará em um datablob(é uma coleção de dados binários armazenados como uma única entidade) usando um algoritmo reversível. O código pode ser uma função ou pode ser um programa inteiro. Uma função é fácil, um programa inteiro requer mais trabalho.
  • Você vai incorporar o datablob em algum lugar que o packer iria chegar até ele. Você pode incorporá-lo como um recurso no programa , baixá-lo da Internet ou usar um programa personalizado para inserir manualmente o load no executável do seu packer.
  • Em tempo de execução, seu packer encontrará o datablob, executará o algoritmo reverso e copiará o resultado em um buffer executável (geralmente VirtualAlloc , VirtualProtect ou uma das funções NTDLL que essas funções chamam). Se você estiver incorporando o load como um recurso, usará uma das APIs padrão para recuperá-la. Se você tiver incorporado manualmente o load no executável do packer, precisará ter algum tipo de método de assinatura que ele empacote e procure. Geralmente, você chamará GetModuleHandle para obter o endereço base de si mesmo em tempo de execução e, em seguida, poderá analisar o arquivo PE do packer na memória para localizar o próprio datablob.

Você pode avaliar o projeto UPX: Github

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
Em 06/03/2019 em 13:37, kassane disse:

O primeiro passo é conhecer o formato do arquivo PE com detalhes. Os compactadores executáveis são notoriamente difíceis de escrever; eles não exigem apenas conhecimento profundo do arquivo executável em si, mas também como ele interage com o sistema operacional durante o carregamento.

Geralmente o packer vai fazer estas coisas:

  • Primeiro, você pegará algum código executável e o transformará em um datablob(é uma coleção de dados binários armazenados como uma única entidade) usando um algoritmo reversível. O código pode ser uma função ou pode ser um programa inteiro. Uma função é fácil, um programa inteiro requer mais trabalho.
  • Você vai incorporar o datablob em algum lugar que o packer iria chegar até ele. Você pode incorporá-lo como um recurso no programa , baixá-lo da Internet ou usar um programa personalizado para inserir manualmente o load no executável do seu packer.
  • Em tempo de execução, seu packer encontrará o datablob, executará o algoritmo reverso e copiará o resultado em um buffer executável (geralmente VirtualAlloc , VirtualProtect ou uma das funções NTDLL que essas funções chamam). Se você estiver incorporando o load como um recurso, usará uma das APIs padrão para recuperá-la. Se você tiver incorporado manualmente o load no executável do packer, precisará ter algum tipo de método de assinatura que ele empacote e procure. Geralmente, você chamará GetModuleHandle para obter o endereço base de si mesmo em tempo de execução e, em seguida, poderá analisar o arquivo PE do packer na memória para localizar o próprio datablob.

Você pode avaliar o projeto UPX: Github

Dei uma olhada, basicamente é criado uma outra seção no PE e ela é descompressada usando o WriteProcessMemory(). 

Valeu!

Editado por Davi
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons no total são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...