项目作者: fanquake

项目描述 :
Swift 5 based ELF parser (WIP)
高级语言: Swift
项目地址: git://github.com/fanquake/elf-reader.git
创建时间: 2019-05-04T03:21:19Z
项目社区:https://github.com/fanquake/elf-reader

开源协议:

下载


elfReader 🧝

A Swift based ELF parser. Written after reading Life of a binary, see below.

Build

  1. swift build

Test

  1. swift test

Life of a Binary

  1. docker run -it --rm -v $(pwd)/elf-reader:/elf-reader --workdir /elf-reader/Tests/Resources ubuntu:bionic
  2. # install gcc and readelf
  3. apt update && apt upgrade -y && apt install -y gcc elfutils
  4. gcc --version
  5. -> gcc (Ubuntu 7.4.0-1ubuntu1~18.04) 7.4.0
  6. # sample.c is provided, so just compile.
  7. gcc -c sample.c
  8. eu-readelf -h sample.o
  9. -> ELF Header:
  10. Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  11. Class: ELF64
  12. <snip lots more info>
  13. Section header string table index: 12

At this point, you could jump out of the container, and run swift test.
A basic test for elfReader will look at the sample.o we just compiled and dump some ELF header info as part of the output.

  1. pushd elf-reader
  2. swift test
  1. some: elfReader.elfReader
  2. - magic: "7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00"
  3. - architecture: elfReader.elfReader.Architecture.elf64
  4. - endianess: elfReader.elfReader.Endianess.littleEndian
  5. - identifier: elfReader.elfReader.elfIdentifier.ET_REL
  6. - machine: elfReader.elfReader.InstructionSet.EM_X86_64
  7. - osABI: elfReader.elfReader.operatingSystemABI.systemv
  8. - version: 1