La extensión implementa soporte de arquitectura eBPF para Ghidra y permite el desmontaje y descompilación de programas eBPF.
Desde mayo de 2023, eBPF-for-Ghidra se ha incluido en el repositorio oficial de NationalSecurityAgency/Ghidra .
Puede obtener las últimas actualizaciones y correcciones para el módulo eBPF directamente en Ghidra.
Este repositorio puede archivarse en el futuro.
Ejemplo de programa eBPF que puede obtener aquí.
Ejemplo de desmontaje y descompilación de eBPF:
File → Install Extensions...
GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
y utilice Ghidra para instalarlo: File → Install Extensions...
GhidraExtensions
.09.03.2019 — Implementación de mapas eBPF, se implementó un controlador de reubicación personalizado
19.09.2019: se resolvió el problema con la pila
20.09.2019 — Los asistentes de llamada de eBPF se implementan como llamadas al sistema, se agrega la firma del asistente a través de eBPFAnalyzer personalizado
23.09.2019 — marcadores incorrectos solucionados
01.12.2020 — se agregaron nuevos ayudantes de eBPF
23.06.2022: soporte agregado para llamadas relativas (tipo de reubicación R_BPF_64_32
). Gracias @cnwangjihe por esta idea. imm
de la instrucción de llamada donde bpf_call->src_reg == BPF_PSEUDO_CALL
ahora contiene el desplazamiento relativo a la función objetivo.
Antes:
Después:
24.06.2022 — realizando el Pull Request al repositorio oficial de Ghidra como principal proveedor del procesador eBPF
19.12.2022: se agregó soporte para operaciones BPF_ATOMIC, se agregaron instrucciones ALU32, se agregaron instrucciones BPF_JMP32, se corrigió la instrucción JSET
05.03.2023 — Se agregó compatibilidad con el procesador eBPF al repositorio oficial de Ghidra en la confirmación 506ca1e
A partir de Ghidra 10.3, el módulo eBPF se incluye por defecto en Ghidra. Ya no es necesario crear este proyecto y agregarlo como una extensión de Ghidra. Para los usuarios de versiones anteriores de Ghidra, aún se puede acceder al módulo eBPF a través de versiones existentes.
Documentación oficial del núcleo
Documentación oficial del kernel - preguntas
Programas eBPF para probar en Ghidra
Desensamblador eBPF simple en Rust
Máquina virtual Rust y compilador JIT para programas eBPF
Ayudantes de eBPF (todos)
Descripción general del eBPF