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 · Rust 包仓库 257/week @ 2024-04-24 · Rust 包仓库 244/week @ 2024-05-01 · Rust 包仓库 275/week @ 2024-05-08 · Rust 包仓库 377/week @ 2024-05-15 · Rust 包仓库 451/week @ 2024-05-22 · Rust 包仓库 292/week @ 2024-05-29 · Rust 包仓库 495/week @ 2024-06-05 · Rust 包仓库 374/week @ 2024-06-12 · Rust 包仓库 713/week @ 2024-06-19 · Rust 包仓库 402/week @ 2024-06-26 · Rust 包仓库 221/week @ 2024-07-03 · Rust 包仓库 755/week @ 2024-07-10 · Rust 包仓库 1001/week @ 2024-07-17 · Rust 包仓库 326/week @ 2024-07-24 · Rust 包仓库 502/week @ 2024-07-31 · Rust 包仓库 586/week @ 2024-08-07 · Rust 包仓库

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