
Un travieso crate de parseo binario multiplataforma, escrito en Rust.

Goblin requiere rustc 1.85.0 (Rust edición 2024).
Añade a tu Cargo.toml
[dependencies]
goblin = "0.10"
libgoblin pretende ser tu tienda única para análisis, carga y análisis de binarios.
Goblin soporta principalmente los siguientes casos de uso importantes:
Estructuras #[repr(C)] centrales, sin std, tiempo de compilación mínimo, 32/64 (o ambas) a tu gusto.
Type punning. Define una función una vez en un tipo, pero haz que funcione en variantes de 32 o 64 bits - sin cambiar realmente nada, ¡y sin macros! Consulta examples/automagic.rs para un ejemplo básico.
Modo std. Esto añade implementaciones de lectura y escritura mediante Pread y Pwrite, lectura desde archivo, asignaciones convenientes, métodos adicionales, etc. Esto es para clientes que pueden asignar memoria y quieren leer binarios desde el disco.
Endian_fd. Un nombre realmente terrible 😆 esto es para análisis de binarios como en panopticon o falcon que necesita leer binarios de endianness foránea, o como base para construir binutils de arquitectura foránea multiplataforma, por ejemplo cargo-sym y bingrep son ejemplos simples de esto, pero el cielo es el límite.
Aquí hay algunas cosas que podrías hacer con este crate (o ayudar a implementar para que se puedan hacer):
Pwrite derivado).no_std. Es decir, es esencialmente solo definiciones de struct y constantes (como un encabezado C) - sin fd, sin salida, sin std.libgoblin está diseñado para ser masivamente configurable. Las banderas actuales son:
repr(C)repr(C)repr(C) de mach-o de 64 bitsrepr(C) de mach-o de 32 bitsrepr(C) de PE de 32 bitsrepr(C) de PE de 64 bitsrepr(C) de Terse Executable (TE)no_stdLos mantenedores son los revisores de primer contacto para ese backend en particular. Son elegidos según contribuciones previas, actividad, conocimiento base y comportamiento amigable y gregario :D
Actualmente, yo (@m4b) solo tengo derechos de fusión para todos los PRs. En el futuro es probable que el/los mantenedor(es) de ese backend dado también tengan derechos de fusión.
Por último, probablemente seguiré dando revisiones superficiales a todos los PRs, pero delegaré mayormente/completamente al mantenedor de ese backend.
Y recuerda siempre la sabiduría de Bill y Ted: "¡Sed excelentes los unos con los otros!"
¡Gracias a todos ❤️!
En orden lexicográfico:
A menos que se indique explícitamente lo contrario, aceptas que tus contribuciones tienen la licencia descrita en el archivo LICENSE adjunto (MIT).