
다중 아키텍처 ELF 로더 및 분석 툴킷으로, x86 및 x86-64 바이너리를 대상으로 프로빙, 디스어셈블리, 헥스 덤프, 엔트로피 계산, mmap/memfd 실행 기능을 제공합니다.
Elfina는 x86 및 x86-64 바이너리를 지원하는 다중 아키텍처 ELF 로더입니다.
이 프로젝트는 v2.0.0부터 Rust로 구현되었습니다.
최근 Windows에서 리버스 엔지니어링과 PE 파일 형식을 공부하고 있습니다.
그 후 Linux 리버스 엔지니어링과 루트킷 개발에 대해 더 배우기 위해 ELF 바이너리를 탐색하기 시작했습니다.
ELF 실행 파일이 어떻게 로드되고 실행되는지 더 잘 이해하기 위해, Linux 커널과 ELF 파일 형식에 초점을 맞춘 학습 프로젝트로 Elfina를 개발했습니다.
이 프로젝트가 유용하거나 유익하다고 생각하신다면 ⭐를 눌러주시면 감사하겠습니다!
이 프로젝트는 교육 및 연구 목적으로만 제공됩니다.
다음과 같은 내용을 이해하는 데 도움을 주기 위해 설계되었습니다:
--mmap 로딩--memfd 실행--info는 ELF 메타데이터 및 구조를 표시합니다--hexdump : ELF 파일의 16진수 표현을 표시합니다--hexdump-out: --hexdump 결과를 특정 파일에 저장합니다--entropy: 패킹되거나 압축된 섹션을 식별하는 데 도움이 되는 엔트로피를 계산합니다--entropy-out: --entropy 결과를 특정 파일에 저장합니다--disasm: ELF 바이너리를 디스어셈블합니다--disasm-out: --disasm 결과를 특정 파일에 저장합니다sudo apt install gcc-multilib
릴리스 패키지를 다운로드하고 압축을 해제합니다:
wget https://github.com/iss4cf0ng/Elfina/releases/latest/download/elfina-linux.tar.gz
tar -xzf elfina-linux.tar.gz
cd elfina
chmod +x ./elfina
chmod +x ./elfina32
레이아웃은 다음과 같습니다:
elfina/
├ elfina
└ elfina32
// ---------- elfina (x64) ----------
./elfina --coffee
./elfina --info <x64_elf_path>
./elfina --mmap <x64_elf_path> [arguments]
./elfina --memfd <x64_elf_path> [arguments]
./elfina --hexdump <x64_elf_path>
./elfina --hexdump-out <x64_elf_path>
./elfina --entropy <x64_elf_path>
./elfina --entropy-out <output_file> <x64_elf_path>
./elfina --disasm <x64_elf_path>
./elfina --disasm-out <output_file> <x64_elf_path>
// ---------- elfina32 (x86) ----------
./elfina32 --coffee
./elfina32 --info <x86_elf_path>
./elfina32 --mmap <x86_elf_path> [arguments]
./elfina32 --memfd <x86_elf_path> [arguments]
./elfina32 --hexdump <x86_elf_path>
./elfina32 --hexdump-out <x86_elf_path>
./elfina32 --entropy <x86_elf_path>
./elfina32 --entropy-out <output_file> <x86_elf_path>
./elfina32 --disasm <x86_elf_path>
./elfina32 --disasm-out <output_file> <x86_elf_path>
리포지토리를 클론하고 프로젝트를 컴파일합니다:
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/C
make
또는
chmod +x build.sh
./build.sh
git clone https://github.com/iss4cf0ng/Elfina
cd Elfina/Rust
chmod +x build.sh
./build.sh
WSL2(Windows Subsystem for Linux)에서는 Elfina가 32비트 ELF 바이너리 파일을 실행할 수 없습니다. 프로빙(--info) 및 64비트 실행은 정상적으로 작동합니다. 완전한 32비트 지원을 위해서는 네이티브 Linux 환경 또는 VirtualBox나 VMWare와 같은 VM을 사용하세요.
--hexdump
--entropy
--disasm
| 아키텍처 | 비트 | 일반적인 장치 |
|---|
| x86 (i386) | 32비트 | 구형 PC, 32비트 Linux |
| x86-64 | 64비트 | 최신 PC, 서버 |
| ARM32 | 32비트 | Raspberry Pi 2, 구형 Android |
| AArch64 (ARM64) | 64비트 | Raspberry Pi 3/4/5, 최신 Android |
| RISC-V 64 | 64비트 | SiFive 보드, VisionFive, 신흥 Linux 장치 |