7 ms·
This is rather "embed intermediate representation, extract, run another target's back end, and link". I was hoping this would be explaining how to go from ARM b
by sjtgraham 7y ago
This is rather "embed intermediate representation, extract, run another target's back end, and link". I was hoping this would be explaining how to go from ARM by uplifting executable to LLVM IR and retargeting for Intel. This is notionally already possible with ELF and PE executables using McSema (https://github.com/trailofbits/mcsema https://github.com/trailofbits/mcsema).
If anyone is working on this please email me (address in profile), it's something we slated for a future research project and I'd love to talk.
- voltagex_ 7y ago>McSema and remill were developed and are maintained by Trail of Bits, funded by and used in research for DARPA and the US Department of Defense.
- Twirrim 7y agoSo?
- richrichardsson 7y agoDon’t tell them where the internet came from, there ain’t enough tinfoil in the world.
- kenoph 7y agoStatic binary lifting is, in general, undecidable. Actually, correct disassembly is itself undecidable, and binary lifting builds on it. Doing it dynamically, like QEMU/tcg does, is doable. It's really not too difficult to write a lifter, but it's time consuming. You have to take every instruction from the source instruction set and model its side effects in some IR. To make things simple, "whole binary" lifting tools seem to use a global CPU state (registers, flags, etc...) and so the IR you get is quite different from what you would obtain from a compiled program.