lifting-bits / mcsema

Framework for lifting x86, amd64, aarch64, sparc32, and sparc64 program binaries to LLVM bitcode
https://www.trailofbits.com/expertise/mcsema
GNU Affero General Public License v3.0
2.64k stars 342 forks source link

Mach-O Support #32

Open artemdinaburg opened 9 years ago

artemdinaburg commented 9 years ago

Support Mach-O binaries.

jcarlson23 commented 9 years ago

are you thinking you're going to leverage the LLVM MachOObject class and associated MachODumper? Or something custom? Just curious...

jcarlson23 commented 5 years ago

Just noting that I'm still curious about this, so if there's going to be work here, I might be able to help..?

pgoodman commented 5 years ago

So, the IDA and Binary Ninja frontends might already work here. What we lack is ABI/runtime support. The ELF runtime code is likely quite close to what we need. We could also benefit from type information about Objective-C things.

artemdinaburg commented 5 years ago

I also realized that my statement of 'Support Mach-O binaries' wasn't super clear.

Supporting Mach-O binaries that don't call any external functions or use any OS-specific APIs should probably be very easy.

Supporting binaries that use Objective-C messages, Mach calls, or other OS-specific features may be kind of hard.

@jcarlson23 We would love any kind of help you can provide; the best way to reach us is the binary-lifting channel on the Empire Hacking slack