Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Jackalope — Fuzzer binario guiado por cobertura para Windows, macOS, Linux y Android | Kitploit
Herramientas/GitHubGitHub/googleprojectzero/jackalope
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesIngeniería InversaScripting y AutomatizaciónDepuradoresFuzzingPruebas de PenetraciónUtilidades y FrameworksAnálisis de Binarios
GitHubgoogleprojectzero/jackalope

Jackalope

Fuzzer binario guiado por cobertura para Windows, macOS, Linux y Android

1.4k1576hace 1 mesRevisado por Kitploit
Ver Repositorio

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

Jackalope

Copyright 2020 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Qué es Jackalope

Jackalope es un fuzzer personalizable, distribuido y guiado por cobertura que es capaz de trabajar con binarios de caja negra.

¿Por qué otro fuzzer?

Aunque existen muchos buenos fuzzers guiados por cobertura que funcionan en objetivos donde el código fuente está disponible, hay relativamente pocos que funcionan en binarios de caja negra, en particular en los sistemas operativos Windows y macOS, y los que existen se basan principalmente en bases de código que no son muy fáciles de personalizar. Los objetivos iniciales de Jackalope son:

  • Fácil de personalizar para objetivos donde los fuzzers genéricos podrían no funcionar bien. Esto puede incluir
    • Mutadores personalizados
    • Mecanismos de entrega de muestras personalizados
    • Instrumentación personalizada, etc.
  • Fácil de paralelizar, tanto en una sola máquina como en múltiples máquinas

¿Qué hace?

Jackalope se puede usar de forma independiente, pero es más potente cuando se usa como biblioteca, donde los usuarios pueden conectar componentes personalizados que reemplazarían el comportamiento predeterminado. Por defecto, Jackalope incluye:

  • Instrumentación binaria usando TinyInst
  • Un conjunto simple de mutadores genéricos para formatos binarios, así como un motor de mutación basado en gramática
  • Entrega de muestras mediante archivo o mediante memoria compartida

Jackalope se puede ejecutar en paralelo

  • En una sola máquina: pasando el número de hilos de fuzzing mediante el parámetro de línea de comandos -nthreads
  • En múltiples máquinas: ejecutando una instancia como servidor (flag de línea de comandos -start_server) y haciendo que los fuzzers en las máquinas trabajadoras se conecten a este servidor (flag de línea de comandos -server). El servidor entonces recopila y distribuye muestras, crashes y cobertura entre los trabajadores.

¿Qué no hace?

Jackalope actualmente no incluye estrategias de mutación avanzadas. En su lugar, incluye un conjunto de mutadores genéricos, que funcionarán para muchos objetivos; sin embargo, se anima a los usuarios a escribir mutadores y estrategias de mutación personalizados según los objetivos que quieran fuzzear.

¿Qué plataformas son compatibles?

Actualmente, el fuzzing de binarios de caja negra es compatible con los sistemas operativos Windows, macOS, Linux y Android.

En Linux, Jackalope también puede ejecutarse con Sanitizer Coverage (se requiere el código fuente del objetivo). Este modo está documentado en un documento aparte.

Compilar Jackalope

Requisito previo: Python 3

  1. Abra una terminal y configure su entorno de compilación si es necesario. En Windows, en lugar de abrir un símbolo del sistema genérico, querrá abrir el símbolo del sistema de Visual Studio para la plataforma para la que está compilando, o ejecutar vcvars64.bat / vcvars32.bat.

  2. Navegue al directorio que contiene el código fuente.

  3. Ejecute los siguientes comandos:

cd Jackalope
git clone --recurse-submodules [email protected]:googleprojectzero/TinyInst.git
(alternately: git clone --recurse-submodules https://github.com/googleprojectzero/TinyInst.git)
mkdir build
cd build
cmake <generator arguments> ..
cmake --build . --config Release

Los argumentos del generador dependen de su entorno. En macOS querrá usar -G Xcode, mientras que, por ejemplo, en Windows con Visual Studio 2019 y para una compilación de 64 bits usaría -G "Visual Studio 16 2019" -A x64. En Linux, no se requieren argumentos de generador. Al compilar de forma cruzada para Android se necesitan argumentos cmake adicionales, que son los mismos que se describen en las instrucciones de compilación de TinyInst para Android. Si está fuzzeando Android en una VM que admite memoria compartida a través de /dev/shm, -DANDROID_TARGET=VM habilita la entrega de muestras mediante memoria compartida.

Para compilar para ejecutar contra binarios arm64e en macOS, consulte aquí.

¿Recibe el error No CMAKE_C_COMPILER could be found en macOS? Intente actualizar cmake. También asegúrese de que Xcode esté instalado y de haberlo ejecutado al menos una vez (instala algunos componentes en la primera ejecución).

Ejecutar Jackalope

Uso:

./fuzzer <fuzzer arguments> <instrumentation and other components arguments> -- <target command line>

Se admiten los siguientes argumentos de línea de comandos:

-in - Directorio de entrada (directorio que contiene el conjunto de muestras inicial). Si el directorio de entrada es "-", el fuzzer intenta restaurar la sesión anterior (lo mismo que usar el flag -restore).

-out - Directorio de salida

-t - Tiempo de espera de la muestra en ms

-t1 - Tiempo de espera para la inicialización del objetivo (por ejemplo, antes de alcanzar el método objetivo si está definido). Por defecto es el tiempo de espera de la muestra.

-nthreads - Número de hilos del fuzzer. Por defecto es 1.

-delivery <file|shmem> - Mecanismo de entrega de muestras a usar. Si es file, cada muestra se genera como archivo y "@@" en los argumentos del objetivo se reemplaza con una ruta al archivo. Si es shmem, el fuzzer crea memoria compartida en su lugar y reemplaza "@@" en los argumentos del objetivo con el nombre de la memoria compartida. En este caso, es responsabilidad del objetivo abrir la memoria compartida y extraer la muestra. Por defecto es file.

-file_extension - Cuando se usa la entrega de muestras file, añade la extensión especificada al nombre del archivo. Útil si el objetivo espera que los archivos de entrada tengan una determinada extensión.

-restore o -resume - Restaura y reanuda una sesión de fuzzing anterior. Tanto el proceso del fuzzer como el del servidor admiten la restauración.

-server - Especifica el servidor de cobertura a usar.

-start_server - Ejecuta un proceso servidor en lugar de un proceso de fuzzing.

-crash_retry - Número de veces que se intenta reproducir un crash. Por defecto es 10. Los crashes que no se reproducen dentro de este número de reintentos o que no se reproducen al ejecutar sin instrumentación se marcan como inestables (flaky).

-coverage_retry - Número de veces que se reintenta reproducir nueva cobertura. La cobertura que no se puede reproducir de forma fiable dentro de este número de reintentos se considera inestable. Las muestras que contienen solo cobertura inestable no se guardan.

-clean_target_on_coverage - Reinicia el objetivo al reproducir cobertura. Por defecto es true.

-minimize_samples - Intenta minimizar las nuevas muestras antes de guardarlas en el corpus. Por defecto es true.

-iterations_per_round - Número de veces que se muta y ejecuta una muestra del corpus antes de pasar a la siguiente muestra. Por defecto es 1000. Podría considerar disminuir este valor para objetivos muy lentos.

-deterministic_mutations - Usa mutaciones deterministas además de no deterministas. Por defecto es true a menos que se use el flag -server.

Descargar herramienta