A extensão implementa suporte à arquitetura eBPF para Ghidra e permite a desmontagem e descompilação de programas eBPF.
Desde maio de 2023, o eBPF-for-Ghidra foi incluído no repositório oficial NationalSecurityAgency/Ghidra .
Você pode obter as atualizações e correções mais recentes para o módulo eBPF diretamente no Ghidra.
Este repositório pode ser arquivado no futuro.
Exemplo de programa eBPF você pode obter aqui.
Exemplo de desmontagem e descompilação do eBPF:
File → Install Extensions...
GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
e use Ghidra para instalá-lo: File → Install Extensions...
GhidraExtensions
.03.09.2019 — Implementação de mapas eBPF, manipulador de relocação personalizado foi implementado
19.09.2019 — problema com pilha resolvido
20.09.2019 — Os call-helpers eBPF são implementados como syscalls, adicionada assinatura do helper por meio do eBPFAnalyzer personalizado
23/09/2019 – marcadores ruins corrigidos
01.12.2020 — novos auxiliares eBPF adicionados
23.06.2022 — adicionado suporte para chamadas relativas (tipo de realocação R_BPF_64_32
). Obrigado @cnwangjihe por esta ideia. imm
da instrução de chamada onde bpf_call->src_reg == BPF_PSEUDO_CALL
agora contém o deslocamento relativo para a função de destino.
Antes:
Depois:
24.06.2022 — realizando Pull Request para repositório oficial Ghidra como principal fornecedor do processador eBPF
19.12.2022 — adicionado suporte para operações BPF_ATOMIC, instruções ALU32 adicionadas, instruções BPF_JMP32 adicionadas, instrução JSET corrigida
03.05.2023 — Suporte ao processador eBPF adicionado ao repositório oficial Ghidra no commit 506ca1e
A partir do Ghidra 10.3, o módulo eBPF é incluído por padrão no Ghidra. Não há mais necessidade de construir este projeto e adicioná-lo como uma extensão do Ghidra. Para usuários de versões mais antigas do Ghidra, o módulo eBPF ainda pode ser acessado através de Releases existentes.
Documentação oficial do kernel
Documentação oficial do kernel - perguntas
Programas eBPF para testar em Ghidra
Desmontador simples de eBPF em Rust
Máquina virtual Rust e compilador JIT para programas eBPF
Ajudantes do eBPF (todos)
Visão geral do eBPF