
binsync v5.15.4
Un plugin de ingeniería inversa para la colaboración entre descompiladores, construido sobre git.
BinSync
BinSync es una herramienta de colaboración para descompiladores construida sobre el sistema de versionado Git para permitir la colaboración en ingeniería inversa de grano fino, independientemente del descompilador. BinSync está creado por mahaloz, el equipo de angr y el laboratorio de investigación SEFCOM. También se debe en gran parte a su uso por el equipo de hacking Shellphish.
Todos los buenos descompiladores comparten objetos comunes llamados Artefactos de Ingeniería Inversa (REAs, por sus siglas en inglés). Estos REAs son el centro de la capacidad de sincronización de BinSync. Estos son los REAs soportados:
- Cabeceras de función (símbolo, args, tipo)
- Variables de pila (símbolo, tipo)
- Estructuras
- Enums
- Comentarios
Nota: todos los tipos admiten tipos creados por el usuario, como structs.
Únete a nuestro Discord a continuación para obtener más ayuda en línea:
Inicio rápido
Para todas las instalaciones, es mejor usar nuestro instalador de dos partes con Python:
pip3 install binsync && binsync --install
BinSync también está disponible en el gestor de complementos de Binary Ninja.
Si planeas usar BS con Ghidra, debes iniciarlo en modo PyGhidra.
Si planeas usar funciones adicionales de BS, como el Usuario de ChatGPT, instala el paquete así: pip3 install binsync[extras], que instalará paquetes adicionales para el soporte.
Para obtener información completa sobre la instalación, lee nuestra documentación de inicio rápido.
Para desarrolladores, instala el paquete en modo editable (-e) y asegúrate de tener pip>=23.0.0.
Plataformas compatibles
- IDA Pro: >= 8.4 (si tienes una versión anterior, usa BinSync v4.10.1)
- Binary Ninja: >= 2.4
- angr-management: >= 9.0
- Ghidra: >= 12.0 (modo PyGhidra)
Todas las versiones requieren Python >= 3.10 y Git instalados en tu sistema. El soporte de Ghidra aún está en una etapa muy temprana, así que solo espera las funciones mínimas, como la sincronización de nombres de artefactos y comentarios.
Progreso del soporte de descompiladores
Aunque soportamos los descompiladores de la sección anterior, no todos tienen el mismo nivel de sincronización. Para entender la diferencia entre soporte de artefactos, pull, push y auto push, lee nuestra introducción al uso de descompiladores.
IDA Pro
| Operaciones | Cabeceras de función | Variables de pila | Variables globales | Estructuras | Enums | Comentarios |
|---|---|---|---|---|---|---|
| Símbolos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tipos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auto Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Binary Ninja
| Operaciones | Cabeceras de función | Variables de pila | Variables globales | Estructuras | Enums | Comentarios |
|---|---|---|---|---|---|---|
| Símbolos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tipos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auto Push | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Ghidra
| Operaciones | Cabeceras de función | Variables de pila | Variables globales | Estructuras | Enums | Comentarios |
|---|---|---|---|---|---|---|
| Símbolos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Tipos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pull | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Push | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Auto Push | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
angr-management
| Operaciones | Cabeceras de función | Variables de pila | Variables globales | Estructuras | Enums | Comentarios |
|---|---|---|---|---|---|---|
| Símbolos | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Tipos | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Pull | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Push | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Auto Push | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
Scripting
Para scripting, consulta DecLib, que te permite realizar todo el lifting y la manipulación de datos en Python.
Patrocinadores
BinSync y sus proyectos asociados no serían posibles sin el patrocinio. Sin un orden particular, queremos agradecer a todas las organizaciones que han patrocinado anteriormente o patrocinan actualmente uno de los muchos proyectos de BinSync.