Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
ScratchABit — Disassembler interativo facilmente redirecionável e hackeável com API de plugin compatível com IDAPython | Kitploit
Ferramentas/GitHubGitHub/pfalcon/scratchabit
Análise EstáticaEngenharia ReversaDepuradoresAnálise de Binários
GitHubpfalcon/scratchabit

ScratchABit

Disassembler interativo facilmente redirecionável e hackeável com API de plugin compatível com IDAPython

Ver Repositório
413484há 5 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

ScratchABit

ScratchABit é um desmontador incremental interativo com capacidades de análise de fluxo de dados/controle. ScratchABit é dedicado aos esforços da comunidade de engenharia reversa OpenSource (engenharia reversa para produzir drivers/firmware OpenSource para hardware não adequadamente suportado pelos fabricantes, para interoperabilidade de hardware e software, para pesquisa de segurança).

ScratchABit suporta a API IDAPython, bem conhecida na comunidade, para escrever módulos de desmontagem/extensão.

ScratchABit é um trabalho em andamento, funcionalidades são adicionadas conforme a necessidade, contribuições são bem-vindas.

ScratchABit é lançado sob os termos da GNU General Public License v3 (GPLv3).

Requisitos/manifesto

  1. Não deve ser escrito em uma linguagem ofuscada. Isso inclui linguagens que são muito baixo nível, que permitem acessar variáveis não inicializadas, que não diferenciam entre variáveis e funções/procedimentos, que iniciam índices de arrays a partir de números arbitrários, etc., etc. ScratchABit é escrito em Python (versão moderna, Python3) para seu prazer e sanidade mental.

  2. O framework de interface do usuário deve permitir interação do usuário no nível necessário, sem adicionar dependências, inchaço, problemas e incompatibilidades entre versões do framework. ScratchABit atualmente usa uma interface de usuário de texto em tela cheia simples, utilizando sequências de escape de terminal ANSI/VT100 (sim, até a biblioteca curses foi considerada uma dependência muito pesada para impor aos usuários).

  3. Deve aproveitar formatos de texto fáceis de usar para armazenar o "banco de dados", facilitando a reutilização e criação de ferramentas, e o armazenamento em sistemas de controle de versão.

Instalação

Para usar o ScratchABit, você precisa ter o Python3 instalado (testado com Python 3.3 até 3.7) e um terminal ou emulador de terminal VT100 (mínimo) ou XTerm (recomendado) (qualquer sistema Unix deve ser compatível, como Linux/BSD/etc., veja FAQ abaixo para mais detalhes).

Clone o código usando:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

Se você clonou o código sem --recursive, execute git submodule update --init no diretório do ScratchABit.

O ScratchABit agora vem com plugin(s) de CPU baseado(s) no Capstone Engine, que permitem acesso a várias arquiteturas de CPU. Para usá-lo, o módulo de bindings Python recente para o Capstone deve estar instalado (de preferência aos pacotes fornecidos pelas distribuições do sistema, que geralmente estão desatualizados). A maneira mais fácil de instalá-lo é no diretório de pacotes do usuário do Python:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

Uma alternativa é instalá-lo em um ambiente virtual Python dentro do diretório do ScratchABit:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

Sempre que você abrir uma nova sessão de terminal para trabalhar com o ScratchABit, execute o comando source .venv/bin/activate novamente para ativar o ambiente virtual.

Se nada disso funcionar, você pode tentar instalar o pacote capstone a nível de sistema (não recomendado):

root@kitploit:~
sudo pip3 install --system capstone

Início rápido

Se você deseja desmontar um arquivo em formato executável auto-descritivo (como ELF), basta passá-lo como argumento para ScratchABit.py. O repositório inclui vários arquivos example-*.elf para várias arquiteturas para um início rápido. Por exemplo, para testar a versão x86 32 bits:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

Alternativamente, se você deseja desmontar um arquivo binário bruto, você precisa criar um arquivo .def (definição) para especificar quais áreas de memória estão definidas para o código, em qual endereço carregar o arquivo binário, etc. (Nota: um arquivo .def pode ser útil também para arquivos .elf e similares.) O repositório inclui um código binário bruto x86_64 simples, e o arquivo example-x86_64.def correspondente (veja dentro para descrição das opções disponíveis):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

Pressione F9 para acessar menus (o mouse também funciona em terminais compatíveis com XTerm). Pressione F1 para obter ajuda sobre os atalhos do teclado (a maioria das ações também é acessível via menu). O fluxo de trabalho do ScratchABit é semelhante ao de outros desmontadores interativos (alguma experiência anterior ou leitura de fundo pode ser útil).

Usando Plugins

Plugins de processador IDAPython podem ser carregados de qualquer lugar no caminho de módulo do Python. Alternativamente, você pode criar um link simbólico/copiar o(s) arquivo(s) .py do plugin para o subdiretório plugins/cpu/.

Depois que o plugin estiver disponível, crie um novo arquivo de definição baseado em example-x86_64.def que defina o nome do módulo do plugin (sem a extensão .py) na linha cpu xxx.

Para um exemplo muito simples que usa um plugin externo, veja este arquivo esp8266.def que funciona com o plugin xtensa.py do repositório ida-xtensa2.

TODO/Coisas a decidir

  • Atualmente usa vários arquivos para o "banco de dados", cada um armazenando um tipo particular de informação. Mudar para um único arquivo YAML?
  • Adicionar cor (baixa prioridade, patches (não inflados!) são bem-vindos).
  • Poucos comandos importantes da UI ainda para implementar para trabalho confortável. ( Todos os comandos mais importantes já devem estar lá, outras funcionalidades devem ser implementadas usando plugins).
  • Oferecer para salvar o DB ao sair se modificado.
  • Integração com Git para salvamento do DB.
  • Melhorar robustez (adicionar tratador de exceções no nível do loop principal, não abortar a aplicação, mostrar ao usuário/log e continuar).
  • Tentar lidar com inconsistências de fluxo de código (ex.: dentro de uma instrução - baixa prioridade para o uso pretendido) e inconsistências de acesso a dados (ex.: acessar bytes individuais de uma palavra previamente detectada - maior prioridade). (Melhorado na 1.4.)
  • Ver como suportar outros tipos de plugins IDAPython além apenas de módulos de processador.
  • Analisar e usar informações de depuração (ex.: DWARF) presentes em arquivos ELF (etc.).

FAQ

P: Quais processadores/arquiteturas são suportados?

R: O ScratchABit não suporta nenhuma arquitetura de processador por conta própria, ele é totalmente redirecionável usando plugins da API IDAPython. Muitos plugins estão disponíveis, escrever um novo plugin é fácil. Para permitir que os usuários testem o ScratchABit, um plugin simples de processador x86 está incluído na distribuição, usando o desmontador Pymsasid por baixo dos panos.

A partir da versão 2.0, o plugin Capstone também está incluído, permitindo acesso a várias arquiteturas, incluindo x86, ARM, MIPS, PowerPC, SPARC, etc. (o suporte a arquiteturas é ativado gradualmente com base em testes de usuários).

Você pode ler sobre os plugins fornecidos junto com o ScratchABit no README do diretório plugins/cpu/.

P: Depurador?

R: O ScratchABit é dedicado à análise estática e suporte fácil para novas arquiteturas de CPU (apenas codifique um novo plugin de CPU em Python - você pode obter resultados iniciais em algumas horas). A análise dinâmica não foi concebida como um recurso central e não há planos imediatos para implementá-la. Patches são bem-vindos, no entanto.

P: Descompilador?

R: Existe um projeto relacionado, chamado ScratchABlock para análise profunda de programas, transformação e descompilação. Espera-se que à medida que o ScratchABlock amadurecer, algumas de suas funcionalidades estarão disponíveis dentro do ScratchABit (talvez via plugins).

P: Não estou no Linux, como posso executar o ScratchABit?

R: Instale o Linux em um emulador/VM no seu sistema e alegre-se.

P: Captura de tela obrigatória?

R: Claro:

screenshot

Baixar ferramenta