Le cadre d'analyse binaire pharos statique est un projet de l'Institut de génie logiciel de l'Université Carnegie Mellon. Le cadre est conçu pour faciliter l'analyse automatisée des programmes binaires. Il utilise l'infrastructure du compilateur Rose développé par Lawrence Livermore National Laboratory for Disassembly, Control Flow Analysis, Instruction Semantics, etc. Ce logiciel est publié sous une licence BSD.
La distribution actuelle est une mise à jour substantielle de la version précédente et ajoute une variété de fonctionnalités, y compris des améliorations à l'outil Ooanalyzer, le code d'analyse de chemin expérimental, les améliorations des partitions, le multi-threading et de nombreuses autres fonctionnalités plus petites.
Le Framework Pharos est un projet de recherche et le code subit un développement actif. Aucune garantie d'adéquation à quelque fin que ce soit n'est fournie. Bien que cette version fournit des instructions de construction, des tests unitaires et une certaine documentation, il reste beaucoup de travail à effectuer. Nous avons testé quelques configurations de construction sélectionnées, mais nous n'avons pas testé activement la portabilité du code source. Voir les instructions d'installation pour plus de détails.
Étant donné que l'objectif principal de la publication de ce code est de fournir une transparence dans nos recherches et de stimuler la conversation avec d'autres chercheurs en analyse statique binaire, n'hésitez pas à contacter Cory Cohen [email protected] avec des questions que vous pourriez avoir sur ce travail. Je ne pourrai peut-être pas répondre en temps opportun, mais je ferai de mon mieux.
Apianalyzer est un outil pour trouver des séquences d'appels API avec les données et les relations de contrôle spécifiées. Cette capacité est destinée à être utilisée pour détecter les paradigmes d'interaction du système d'exploitation communs comme l'ouverture d'un fichier, l'écriture et la fermeture.
Ooanalyzer est un outil pour l'analyse et la récupération des constructions orientées objet. Cet outil a fait l'objet d'un article intitulé "Utilisation de la programmation logique pour récupérer les classes et méthodes C ++ à partir d'exécutables compilés" qui a été publié lors de la conférence ACM sur la sécurité des ordinateurs et des communications en 2018. L'outil identifie les membres et les méthodes d'objet en suivant les pointeurs d'objets entre les fonctions du programme. Une implémentation précédente de cet outil a été nommée "Objdigger", mais elle a été renommée refléter une refonte substantielle en utilisant des règles Prolog pour récupérer les attributs de l'objet. La version actuelle de l'outil ne prend en charge que l'analyse des exécutables x86 32 bits compilés par Microsoft Visual C ++. Pour des instructs plus détaillés sur la façon d'exécuter Ooanalyzer sur de très grands exécutables, consultez ces notes.
La distribution Pharos utilisée pour inclure un plugin qui a importé des informations OO exportées par Ooanalayzer dans l'ensemble d'outils d'ingénierie inverse de Ghidra. Pour obtenir cette fonctionnalité maintenant et à l'avenir, installez le plugin Kaiju Ghidra, qui comprend les fonctionnalités fournies par le plugin Ooanalayzer.
Callanalyzer est un outil pour signaler les paramètres statiques aux appels d'API dans un programme binaire. Il s'agit en grande partie d'une démonstration de notre convention d'appel actuelle, de l'analyse des paramètres et des capacités de détection de type, bien qu'elle fournit également une analyse utile du code dans un programme.
FN2YARA est un outil pour générer des signatures YARA pour les fonctions de correspondance dans un programme exécutable. Les programmes qui partagent un nombre important de fonctions sont susceptibles d'avoir un comportement en commun.
FN2HASH est un outil pour générer une variété de hachages et d'autres propriétés descriptives pour les fonctions dans un programme exécutable. Comme FN2YARA, il peut être utilisé pour soutenir l'analyse de similitude binaire ou fournir des fonctionnalités pour les algorithmes d'apprentissage automatique.
Dumpmasm est un outil pour vider les listes de démontage à partir d'un exécutable à l'aide du framework Pharos dans le même style que les autres outils. Il n'a pas été activement maintenu, et vous devriez envisager d'utiliser la standard de Rose Recursivedissemble à la place http://rosecompiler.org/rose_html_reference/Rosetools.html.