Background
As the title is self-explanatory, I would like to translate binaries of any architecture (e.g. x86, ARM, ARM Thumb) to an intermediate language in order to apply arch-independent static analysis.
To be exact, my work is confined to the shared objects supplied in APK files for Android platform. My basic requirements, which I would expect the IL to meet, is as follows (Actually my goal is to extract information flows from a given .so
file supplied in an APK file).
- Binary slicing
- PDG (CFG/DFG)
- Well-supported by its maintainer or its community
For this purpose I've looked into some existing tools listed below, but unfortunately I'm not sure whether I can use them to reveal information flows or not.
- OpenREIL: The aim of this project is to lift up arch-dependent binaries into REIL.
- Barf Project: A multiplatform open source Binary Analysis and Reverse engineering Framework
- Capstone: A disassembly framework.
- Epic: This tool translates binaries of any-arch to arch-independent LLVM bitcode. (This project is not public, so I cannot use it.)
Question
Is there any IL out there that I use to statically analyze a arch-dependent .so
file (within an APK archive) in order to extract information flows? Basically I want it to provide basic requirements such as slicing and PDG.