Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ScratchABit — Desensamblador interactivo fácilmente reorientable y hackeable con API de complementos compatible con IDAPython | Kitploit
Herramientas/GitHubGitHub/pfalcon/scratchabit
Análisis EstáticoIngeniería InversaDepuradoresAnálisis de Binarios
GitHubpfalcon/scratchabit

ScratchABit

Desensamblador interactivo fácilmente reorientable y hackeable con API de complementos compatible con IDAPython

Ver Repositorio
41348hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ScratchABit

ScratchABit es un desensamblador incremental interactivo con capacidades de análisis de flujo de datos/control. ScratchABit está dedicado a los esfuerzos de la comunidad de ingeniería inversa de código abierto (ingeniería inversa para producir controladores/firmware de código abierto para hardware no compatible adecuadamente por los fabricantes, para la interoperabilidad de hardware y software, y para la investigación de seguridad).

ScratchABit soporta la conocida API IDAPython de la comunidad para escribir módulos de desensamblado/extensión.

ScratchABit es un trabajo en progreso, las funcionalidades se añaden según se necesitan, las contribuciones son bienvenidas.

ScratchABit se publica bajo los términos de la Licencia Pública General GNU v3 (GPLv3).

Requisitos/manifiesto

  1. No debe estar escrito en un lenguaje ofuscado. Esto incluye lenguajes que son demasiado de bajo nivel, que permiten acceder a variables no inicializadas, que no diferencian entre variables y funciones/procedimientos, que comienzan los índices de arreglos desde números arbitrarios, etc., etc. ScratchABit está escrito en Python (versión moderna, Python3) para su placer y cordura.

  2. El marco de interfaz de usuario debe permitir la interacción del usuario al nivel necesario, no añadir dependencias, hinchazón, problemas e incompatibilidades entre versiones del marco. ScratchABit actualmente utiliza una interfaz de usuario de texto simple de pantalla completa, usando secuencias de escape de terminal ANSI/VT100 (sí, incluso la biblioteca curses se consideró una dependencia demasiado hinchada para imponerla a los usuarios).

  3. Debe aprovechar formatos de texto fáciles de usar para almacenar la "base de datos", para facilitar la reutilización y la escritura de herramientas, y el almacenamiento en sistemas de control de versiones.

Instalación

Para usar ScratchABit, necesita tener instalado Python3 (probado con Python 3.3 a 3.7) y una terminal o emulador de terminal VT100 (mínimo) o XTerm (recomendado) (cualquier sistema Unix debería ser compatible, como Linux/BSD/etc., vea las preguntas frecuentes a continuación para más información).

Clone el código usando:

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

Si clonó el código sin --recursive, ejecute git submodule update --init en el directorio de ScratchABit.

ScratchABit ahora incluye plugin(s) de CPU basados en Capstone Engine, que permiten acceder a varias arquitecturas de CPU. Para usarlo, se debe instalar un módulo reciente de enlaces Python para Capstone (preferiblemente a los paquetes distribuidos por las distribuciones del sistema operativo, que a menudo están desactualizados). La forma más fácil de instalarlo es en el directorio de paquetes de usuario de Python:

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

Una alternativa es instalarlo en un entorno virtual de Python dentro del directorio de ScratchABit:

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

Cuando abra una nueva sesión de terminal para trabajar con ScratchABit, ejecute el comando source .venv/bin/activate nuevamente para activar el entorno virtual.

Si nada de lo anterior funciona, puede intentar instalar el paquete capstone a nivel de sistema (no recomendado):

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

Inicio rápido

Si desea desensamblar un archivo en formato ejecutable autodescriptivo (como ELF), simplemente páselo como argumento a ScratchABit.py. El repositorio incluye varios archivos example-*.elf para varias arquitecturas para un inicio rápido. Por ejemplo, para probar la versión x86 de 32 bits:

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

Alternativamente, si desea desensamblar un archivo binario sin formato, necesita crear un archivo .def (definición), para especificar qué áreas de memoria están definidas para el código, en qué dirección cargar el archivo binario, etc. (Nota: un archivo .def también puede ser útil para archivos .elf y similares). El repositorio incluye un código binario sin formato simple x86_64, y el archivo example-x86_64.def correspondiente (mire dentro para una descripción de las opciones disponibles):

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

Presione F9 para acceder a los menús (el mouse también funciona en terminales compatibles con XTerm). Presione F1 para obtener ayuda sobre los atajos de teclado (la mayoría de las acciones también son accesibles a través del menú). El flujo de trabajo de ScratchABit es similar a otros desensambladores interactivos (puede ser útil algo de experiencia previa o lectura de fondo).

Uso de Plugins

Los plugins de procesador IDAPython se pueden cargar desde cualquier lugar en la ruta de módulos de Python. Alternativamente, puede enlazar simbólicamente o copiar el/los archivo(s) .py del plugin en el subdirectorio plugins/cpu/.

Una vez que el plugin está disponible, cree un nuevo archivo de definición basado en example-x86_64.def que establezca el nombre del módulo del plugin (sin la extensión .py) en la línea cpu xxx.

Para un ejemplo muy simple que usa un plugin externo, vea este archivo esp8266.def que funciona con el plugin xtensa.py del repositorio ida-xtensa2.

TODO/Cosas por decidir

  • Actualmente usa múltiples archivos para la "base de datos", cada uno almacenando un tipo particular de información. ¿Cambiar a un solo archivo YAML?
  • Añadir color (baja prioridad, ¡parches sin hinchazón son bienvenidos!).
  • Faltan algunos comandos importantes de UI para trabajar cómodamente. ( Todos los comandos más importantes deberían estar ahí, se espera que otras funcionalidades se implementen mediante plugins).
  • Ofrecer guardar la BD al salir si se ha modificado.
  • Integración con Git para guardar la BD.
  • Mejorar robustez (añadir manejador de excepciones a nivel del bucle principal, no abortar la aplicación, mostrar al usuario/registrar y continuar).
  • Intentar lidiar con inconsistencias en el flujo de código (por ejemplo, dentro de una instrucción - baja prioridad para el uso previsto) e inconsistencias en el acceso a datos (por ejemplo, acceder a bytes individuales de una palabra previamente detectada - mayor prioridad). (Mejorado en 1.4.)
  • Ver cómo soportar otros tipos de plugins de IDAPython además de solo módulos de procesador.
  • Analizar y usar información de depuración (por ejemplo, DWARF) presente en archivos ELF (etc.).

Preguntas frecuentes

P: ¿Qué procesadores/arquitecturas están soportadas?

R: ScratchABit no soporta ninguna arquitectura de procesador por sí mismo, es completamente reorientable mediante plugins de la API IDAPython. Hay muchos plugins disponibles, y escribir un nuevo plugin es fácil. Para que los usuarios puedan probar ScratchABit, se incluye un plugin de procesador x86 simple en la distribución, que utiliza el desensamblador Pymsasid por debajo.

A partir de la versión 2.0, también se incluye un plugin de Capstone, que permite acceder a varias arquitecturas, incluyendo x86, ARM, MIPS, PowerPC, SPARC, etc. (el soporte de arquitecturas se habilita gradualmente según las pruebas de los usuarios).

Puede leer sobre los plugins incluidos con ScratchABit en el README del directorio plugins/cpu/.

P: ¿Depurador?

R: ScratchABit está dedicado al análisis estático y al soporte fácil para nuevas arquitecturas de CPU (solo escriba un nuevo plugin de CPU en Python, puede obtener resultados iniciales en pocas horas). El análisis dinámico no fue concebido como una característica principal y no hay planes inmediatos para implementarlo. Aunque los parches son bienvenidos.

P: ¿Descompilador?

R: Hay un proyecto relacionado, llamado ScratchABlock para el análisis profundo de programas, transformación y descompilación. Se espera que a medida que ScratchABlock madure, parte de su funcionalidad estará disponible dentro de ScratchABit (quizás a través de plugins).

P: No estoy en Linux, ¿cómo puedo ejecutar ScratchABit?

R: Instale Linux en un emulador/VM en su sistema y regocíjese.

P: ¿Captura de pantalla obligatoria?

R: ¡Claro!

screenshot

Descargar herramienta