Traduction de langage machine dans IR LLVM (démontage / remontage de X86_64. X86. BRAS dans LLVM bitcode)
Je voudrais traduire X86_64, x86, ARM exécutables dans IR LLVM (démontage).
Quelle solution proposez-vous ?
- J'ai vérifié llvm-objdump, mais comme je le comprends, il produit x86_64/assembleur x86 - ce que je veux, c'est LLVM assembleur.
- Il y a beaucoup de désassembleurs pour x86_86, x86, arm. Peut-être que certains assemlber compilateur cible "IR LLVM" ?
- Ce n'est pas le démontage, c'est la traduction!
- Au moins pour le X86 partie de votre question, il y a blog.llvm.org/2010/01/x86-disassembler.html
Vous devez vous connecter pour publier un commentaire.
mcsema est une production de qualité binaire palonnier. Il faut x86 et x86-64 et statiquement "ascenseurs" pour IR LLVM. Il est activement maintenu, sous licence BSD, et a de multiples tests et de la documentation.
https://github.com/trailofbits/mcsema
Envisager d'utiliser RevGen outil développé au sein de l' S2E projet. Il permet de convertir binaires x86 à l'IR LLVM. Le code source peut être vérifié à partir de Revgen branche de dépôt GIT à disposition par l'url https://dslabgit.epfl.ch/git/s2e/s2e.git.
git clone https://dslabgit.epfl.ch/git/s2e/s2e.git
ne peut pas cloner :/.En ce qui concerne RevGen outil mentionné par @bsa2000, ce dernier papier "Un compilateur niveau intermédiaire de la représentation binaire de l'analyse et de la réécriture du système" a souligné certaines limites de S2E et Revinc.
Je les sortir d'ici.
lacune de la traduction dynamique:
IR incomplète:
aucun résumé de la pile ou de la promotion de l'information
Je doute qu'il y aura de solution universelle (pensez indirecte des branches, etc.), IR LLVM est beaucoup plus "niveau supérieur" que n'importe quel assembleur. S'il est possible de traduire par BB base. Vous pourriez vouloir vérifier llvm-qemu et libcpu projets parmi d'autres.
Il y a de nouveaux projets, dans les premières phases, La
libbeauty
:https://github.com/jcdutton/libbeauty
Article sur le projet: Libbeauty: un Autre de la rétro-Ingénierie de l'Outil, le 24 décembre 2013, Michael Larabel - http://www.phoronix.com/scan.php?page=news_item&px=MTU1MTU
Il prend en charge uniquement sous-ensemble de
x86_64
comme entrée maintenant. Un des objectifs du projet est d'être en mesure de compiler généré IR LLVM retour à l'assemblée pour obtenir le binaire avec la même fonctionnalité.Viens de poster quelques références sur la traduction de BRAS binaire à l'IR LLVM:
désarmer bras binaire à l'ir llvm désassembleur
https://code.google.com/p/disarm/
Cependant, je ne l'ai pas essayé, donc pas sûr de sa qualité et de la stabilité. N'importe qui peut afficher l'information supplémentaire à propos de ce projet?