확장은 Ghidra에 대한 eBPF 아키텍처 지원을 구현하고 eBPF 프로그램의 디스어셈블리 및 디컴파일을 허용합니다.
2023년 5월부터 eBPF-for-Ghidra가 공식 NationalSecurityAgency/Ghidra 저장소에 포함되었습니다 .
Ghidra에서 직접 eBPF 모듈에 대한 최신 업데이트 및 수정 사항을 얻을 수 있습니다.
이 저장소는 향후 보관될 수 있습니다.
eBPF 프로그램의 예는 여기에서 얻을 수 있습니다.
eBPF 분해 및 디컴파일의 예:
File → Install Extensions...
에 설치합니다.GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle
사용하고 Ghidra를 사용하여 설치: File → Install Extensions...
GhidraExtensions
디렉터리에 복제하세요.2019년 3월 9일 — eBPF 맵 구현, 사용자 정의 재배치 핸들러가 구현되었습니다.
2019년 9월 19일 — 스택 문제가 해결되었습니다.
2019년 9월 20일 — eBPF 호출 도우미가 syscall로 구현되고 맞춤형 eBPFAnalyzer를 통해 도우미 서명이 추가되었습니다.
2019년 9월 23일 — 잘못된 북마크 수정
2020년 1월 12일 — 새로운 eBPF 도우미 추가됨
2022년 6월 23일 — 상대 호출에 대한 지원이 추가되었습니다( R_BPF_64_32
재배치 유형). 이 아이디어를 주신 @cnwangjihe에게 감사드립니다. bpf_call->src_reg == BPF_PSEUDO_CALL
에 이제 대상 함수에 대한 상대 오프셋이 포함된 호출 명령어의 imm
.
전에:
후에:
2022년 6월 24일 — eBPF 프로세서의 주요 공급업체인 공식 Ghidra 저장소에 Pull Request를 보냅니다.
2022년 19월 12일 — BPF_ATOMIC 작업에 대한 지원 추가, ALU32 명령어 추가, BPF_JMP32 명령어 추가, JSET 명령어 수정
2023년 5월 3일 — 커밋 506ca1e의 Ghidra 공식 저장소에 eBPF 프로세서 지원이 추가되었습니다.
Ghidra 10.3부터 eBPF 모듈이 Ghidra에 기본적으로 포함됩니다. 더 이상 이 프로젝트를 빌드하고 Ghidra 확장으로 추가할 필요가 없습니다. 이전 버전의 Ghidra 사용자의 경우 eBPF 모듈은 기존 릴리스를 통해 계속 액세스할 수 있습니다.
공식 커널 문서
공식 커널 문서 - 질문
Ghidra에서 테스트할 eBPF 프로그램
Rust의 간단한 eBPF 디스어셈블러
eBPF 프로그램용 Rust 가상 머신 및 JIT 컴파일러
eBPF 도우미(전체)
eBPF 개요