Background
Comme le titre est explicite, je voudrais traduire les binaires de toute architecture (par exemple x86, ARM, ARM Thumb) vers un langage intermédiaire afin d'appliquer une analyse statique indépendante de l'archive .
Pour être exact, mon travail se limite aux objets partagés fournis dans les fichiers APK pour la plate-forme Android. Mes exigences de base, auxquelles je m'attendrais à ce que l'IL satisfasse, sont les suivantes (en fait, mon objectif est d'extraire des flux d'informations à partir d'un fichier .so
donné fourni dans un fichier APK).
- Tranchage binaire
- PDG (CFG / DFG)
- Bien soutenu par son responsable ou sa communauté
À cette fin J'ai examiné certains des outils existants répertoriés ci-dessous, mais je ne sais malheureusement pas si je peux les utiliser pour révéler des flux d'informations ou non.
- OpenREIL: L'objectif de ce projet est de transformer les binaires dépendants de l'arc en REIL.
- Projet Barf: un cadre d'analyse binaire et de rétroingénierie open source multiplateforme
- Capstone: Un framework de désassemblage.
- Epic: Cet outil traduit les binaires de any-arch en bitcode LLVM indépendant de l'arch. (Ce projet n'est pas public, donc je ne peux pas l'utiliser.)
Question
Y a-t-il un IL que j'utilise pour analyser statiquement un .so
(dans une archive APK) pour extraire les flux d'informations? Fondamentalement, je veux qu'il fournisse des exigences de base telles que le découpage et PDG.