Closed m4b closed 7 years ago
uhhhh, i cannot repro these build errors on rust 1.16 stable, but can on 1.15.1, this is extraordinarily annoying:
error[E0495]: cannot infer an appropriate lifetime for autoref due to conflicting requirements
--> C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\goblin-0.0.9\src\mach\exports.rs:94:41
|
94 | let lib_symbol_name = bytes.pread::<&str>(offset)?;
| ^^^^^
|
note: first, the lifetime cannot outlive the lifetime 'a as defined on the body at 79:117...
--> C:\Users\appveyor\.cargo\registry\src\github.com-1ecc6299db9ec823\goblin-0.0.9\src\mach\exports.rs:79:118
|
again, above compiles fine on 1.16; i don't see anything sticking out in release notes. This is lame
Fat elf ? Please tell me that was a typo and you meant fat Mach - o? I don't want to support fat elf...
So I have this old Mach o binary with stupid symbol names but it covers various components of the Mach binary system. I can commit that if you like though I think in the future we should have: libfoo and bar, a library with various permutations of symbol visibility and bar which uses foo, and standard libs, all with same c source code but compiled into different formats.
As for fat is it allowed to include libSystem_B.dylib in panopticon or will there be license issues ?
fat elf
My bad.
libSystem_B.dylib in panopticon or will there be license issues ?
Depends on the license. You definitely need the add a line to AUTHORS that states who has the copyright to it.
We use stable on the CI now
P.S. mach exports don't distinguish between function/data, which is cool. so, for example libbeef.dylib
has several data object exports which just get disassembled as usual as garbage; i'm wondering if this is the cause of certain loops
I don't have a mach fat multi architecture binary on hand besides libSystem.B.dylib
which I don't know if I can distribute (I don't know what the license for it is); is it ok to proceed without the fat (which we can't load anyway)?
Amazing work, thanks a lot.
FUTURE TODO: will need a popup selector choosing which architecture to load if a fat binary is selected, and then use https://docs.rs/goblin/0.0.9/goblin/mach/struct.MultiArch.html#method.get to extract the binary (and then load as normal in
loader::load
(except we'll have to export theload_mach
function, or add aload_bytes
api endpoint)ref #268