goblin
goblin copied to clipboard
An impish, cross-platform binary parsing crate, written in Rust
The relocation fields are bitfields, which makes the ordering all weird. Currently we only use the little endian ordering, but that won't work for big endian files. LLVM has code...
Parsing [this archive file](https://github.com/m4b/goblin/files/3774253/os.zip) seems to cause a panic: ``` thread 'main' panicked at 'no entry found for key', src/libcore/option.rs:1166:5 stack backtrace: 0: backtrace::backtrace::libunwind::trace at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/libunwind.rs:88 1: backtrace::backtrace::trace_unsynchronized at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.34/src/backtrace/mod.rs:66...
I wrote some code to read the PDB70 info out of a PE using goblin, to implement the equivalent of `symstore.exe`. I found that [`CodeviewPDB70DebugInfo::signature`](https://github.com/m4b/goblin/blob/a293c5041437367d564e2e7f7c06b63ff1b4a76b/src/pe/debug.rs#L75) wasn't really that useful as...
This would be not hard but it will require write access to the repository. So only project owner or project collaborator could do this.
I’ve noticed that goblin has a very long compile time, relatively speaking. I’ve meant to look into this before whether there is something we can do about it (and also...
I have met some nasty exe that have a invalid .idata section, which will panic. Something like: ``` thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Malformed("Cannot find...
Right now some of the debug prints are hard to read because they spit out the byte arrays as arrays instead of something more byte readable. In particular this affects...
I want to fuzz goblin's parser again, this time with: 1. elf seeds using what we have now + seeds based on bsd elf binaries, etc. 2. mach-o seeds 3....
This deeply annoys me: ```rust let peek = goblin::peek(&mut fd)?; if let Hint::Unknown(magic) = peek { println!("unknown magic: {:#x}", magic) } else { let bytes = { let mut v...
Similar to ELF's symbol iterator, we have a result on invocation, and elements are resultness, because we know the size beforehand.