7个版本

0.3.1 2023年10月13日
0.3.0 2023年1月16日
0.2.0 2021年12月8日
0.1.3 2020年5月30日
0.1.0 2019年4月3日

#293 in 解析器实现

Download history 257/week @ 2024-04-24 244/week @ 2024-05-01 275/week @ 2024-05-08 377/week @ 2024-05-15 451/week @ 2024-05-22 292/week @ 2024-05-29 495/week @ 2024-06-05 374/week @ 2024-06-12 713/week @ 2024-06-19 402/week @ 2024-06-26 221/week @ 2024-07-03 755/week @ 2024-07-10 1001/week @ 2024-07-17 326/week @ 2024-07-24 502/week @ 2024-07-31 586/week @ 2024-08-07

2,547 每月下载量
3 crates 中使用

自定义许可证

72KB
940

包含 (ELF 可执行文件/库, 135KB) tests/data/ls

elf_rs

Build Status Crates.io

这是一个用于处理ELF文件的无需std库。它支持ELF32和ELF64格式。

用法

要读取ELF文件,请将elf_rs::Elf与一个&[u8]内存一起提供

extern crate elf_rs;

use std::io::Read;
use std::fs::File;
use std::env;

use elf_rs::*;

fn read_elf(filename: &String) {
    let mut elf_file = File::open(filename).expect("open file failed");
    let mut elf_buf = Vec::<u8>::new();
    elf_file.read_to_end(&mut elf_buf).expect("read file failed");

    let elf = Elf::from_bytes(&elf_buf).expect("load elf file failed");

    println!("{:?} header: {:?}", elf, elf.elf_header());

    for p in elf.program_header_iter() {
        println!("{:x?}", p);
    }

    for s in elf.section_header_iter() {
        println!("{:x?}", s);
    }

    let s = elf.lookup_section(b".text");
    println!("s {:?}", s);
}

在示例目录下有一个演示readelf,用于读取ELF文件。

$ cargo run --example readelf <path_to_elf_file>

许可证

它根据MIT许可证条款分发。

有关详细信息,请参阅LICENSE文件。

依赖关系

~175–255KB