Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ropfuscator — ROPfuscator é um framework de ofuscação de código de granulação fina para programas em C/C++ que utiliza ROP (programação orientada a retorno). | Kitploit
Ferramentas/GitHubGitHub/ropfuscator/ropfuscator
Ferramentas DefensivasAnálise de CódigoExploraçãoEngenharia ReversaAnálise de Binários
GitHubropfuscator/ropfuscator

ropfuscator

ROPfuscator é um framework de ofuscação de código de granulação fina para programas em C/C++ que utiliza ROP (programação orientada a retorno).

Ver Repositório
4453311há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Aviso de isenção

ROPfuscator é uma prova de conceito de pesquisa e não se destina ao uso em produção. Os autores não assumem qualquer responsabilidade ou obrigação pelo uso do software. Tenha cautela e use por sua conta e risco.


ROPfuscator Build

logo

ROPfuscator é um framework de ofuscação de código de granularidade fina para linguagens suportadas por LLVM, que utiliza ROP (programação orientada a retorno). O ROPfuscator ofusca um programa no nível de código de montagem, transformando instruções regulares em cadeias ROP, frustrando nossa concepção natural de fluxo de controle normal. Ele é implementado como uma extensão do backend x86 do LLVM (10.0.1).

Para build, uso e implementação, consulte os documentos individuais:

  • Como compilar o ROPfuscator: build.md
  • Como usar o ROPfuscator para ofuscar programas: usage.md
  • Detalhes do algoritmo de ofuscação: algorithm.md
  • Detalhes da implementação: implementation.md

Artigo de Pesquisa


Leia o artigo aqui
@inproceedings{depasquale2023ropfuscator,
  title={ROPfuscator: Robust Obfuscation with ROP},
  author={De Pasquale, Giulio and Nakanishi, Fukutomo and Ferla, Daniele and Cavallaro, Lorenzo},
  booktitle={2023 IEEE Security and Privacy Workshops (SPW)},
  pages={1--10},
  year={2023},
  organization={IEEE}
}

Principais Melhorias

Este projeto visa fornecer uma versão aprimorada do ROPfuscator com forte foco em reprodutibilidade e facilidade de integração. Fizemos várias melhorias importantes neste repositório, conforme descrito abaixo.

Gerenciador de Pacotes Nix

O ROPfuscator agora utiliza o Nix, um poderoso gerenciador de pacotes declarativo que permite builds confiáveis e reproduzíveis. O Nix oferece vários benefícios:

  • Garante que dependências e ambientes de build sejam consistentes entre sistemas.
  • Permite ambientes de build isolados, eliminando conflitos com outros pacotes instalados.
  • Suporta rollbacks para versões anteriores de pacotes, facilitando a recuperação de atualizações com falha.

O ROPfuscator fornece um flake Nix que expõe os stdenvs do ROPfuscator e várias funções auxiliares usadas para compilar nativamente derivações Nix, sem aplicar qualquer modificação ao sistema de build do projeto a ser compilado.

Processo de Avaliação

O processo de avaliação foi reescrito do zero, aproveitando ao máximo o gerenciador de pacotes Nix. Isso garante uma avaliação mais confiável e transparente, que servirá de base para trabalhos futuros no ROPfuscator.

Ofuscação Transparente para Pacotes Nix Upstream

O ROPfuscator agora pode tentar ofuscar de forma transparente qualquer pacote presente no repositório de pacotes Nix upstream, nixpkgs, sem exigir qualquer modificação. Isso permite que usuários do Nix integrem o ROPfuscator perfeitamente em seus fluxos de trabalho existentes e testem seus recursos.

O ROPfuscator pode ter como alvo um único projeto, ofuscando apenas os arquivos-objeto pertinentes ao próprio projeto, ou pode ofuscar o alvo junto com todas as suas dependências.


Começando

Usando Nix (recomendado)

Passo 0: Instalar o Nix

Instale o Nix (o gerenciador de pacotes) e certifique-se de que seu daemon esteja em execução.

Passo 1: Habilitar o Nix para usar Flakes

Os Flakes permitem que você especifique as dependências do seu código de forma declarativa e facilitam a especificação de entradas e saídas para projetos. O ROPfuscator expõe diferentes saídas, portanto, precisamos habilitar o Nix para usar flakes.

Aqui está um processo passo a passo sobre como habilitá-los.

Passo 2: Adicionar o repositório de cache do ROPfuscator aos canais do Nix (opcional)

Esta etapa permite aproveitar o repositório de cache do ROPfuscator para evitar recompilar o projeto e todas as suas dependências do zero. Esta etapa é opcional, mas recomendada.

Para habilitar o cache do ROPfuscator, primeiro instale o cachix:

nix-env -iA cachix -f https://cachix.org/api/v1/install

Em seguida, configure o nix.conf para usar o cache binário:

cachix use ropfuscator

Passo 3: Compilar e usar o ROPfuscator

A etapa final é compilar o ROPfuscator. Isso pode ser feito executando:

nix build github:ropfuscator/ropfuscator -L

Se você quiser entrar em um shell configurado para usar o ROPfuscator por padrão, basta executar:

nix shell github:ropfuscator/ropfuscator

O ROPfuscator pode ser usado para ofuscar pacotes presentes no repositório Nixpkgs. Atualmente, estamos usando um fork personalizado porque alguns pacotes upstream não foram configurados corretamente para compilação cruzada. Embora já tenhamos enviado alguns dos patches para o upstream, ainda há trabalho a ser feito para uma experiência perfeita.

Para começar, siga os dois primeiros passos listados acima e instale o Nix. Em seguida, copie o flake-example.nix para um diretório, renomeando-o para flake.nix:

 mkdir -p ropfuscator-example && cd ropfuscator-example
 cp ../flake-example.nix flake.nix

Neste ponto, você pode compilar os dois pacotes definidos no flake: hello e obfuscatedHello.

Para compilar o obfuscatedHello, use:

 nix build .#obfuscatedHello -L

Da mesma forma, para compilar o hello, execute:

 nix build .#hello -L

Visão Geral do ROPfuscator

architecture

Combinamos as seguintes camadas de ofuscação para alcançar uma ofuscação robusta contra diversos ataques.

  • Transformação ROP
    • Converte cada instrução em um ou mais gadgets ROP e traduz todo o código em cadeias ROP.
  • Inserção de Predicados Opacos
    • Traduz os endereços dos gadgets ROP e os valores empilhados em constantes opacas, que são composição de múltiplos predicados opacos.

Configurações

O ROPfuscator pode ser configurado por meio de arquivos de configuração TOML. Este repositório inclui as seguintes configurações prontas:

  • ROP Only: não ofusca endereços de gadgets, valores de pilha, operandos imediatos ou alvos de desvio, e não usa predicados opacos.
  • All Addresses: ofusca todos os endereços de gadgets e usa predicados opacos para todas as constantes opacas.
  • Half addresses: ofusca 50% dos endereços de gadgets e usa predicados opacos para todas as constantes opacas.
  • Full: ofusca todos os endereços de gadgets, valores de pilha, operandos imediatos e alvos de desvio, e usa predicados opacos para todas as constantes opacas.

Cada configuração pode ser personalizada ainda mais com as opções disponíveis na tabela de configuração no README.

Limitações

Baixar ferramenta