Reverse C++ et RTTI

Magazine
Marque
MISC
Numéro
61
Mois de parution
mai 2012
Spécialité(s)


Résumé

Dans le cadre d'un reverse, le langage utilisé par le développeur peut être une précieuse source d'informations. En particulier, le C++ offre la possibilité de déterminer le type d'une variable pendant l'exécution. Cela implique la présence de renseignements sur les classes dans le binaire. Nous allons voir quelles informations doivent être présentes, comment elles sont stockées par le compilateur de Microsoft (cl.exe) puis comment les retrouver pour reconstruire automatiquement le graphe d'héritage. 


Le script d'exemple ainsi que l'ensemble des codes sources utilisés dans cet article sont téléchargeables à l'adresse www.r-3-t.org/ms_rtti.7z.

1. Rappel sur le langage C

Lorsqu'un logiciel est écrit en langage C, il est relativement aisé d’en déduire les structures utilisées. Au paragraphe 6.7.2.1 du standard [1], on peut lire :

« Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There maybe unnamed padding within a structure object, but not at its beginning. »

En d'autres termes, il existe une…

La suite est réservée aux abonnés. Il vous reste 96% à découvrir.
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Envie de lire la suite ? Rejoignez Connect
Je m'abonne maintenant


Article rédigé par

Les listes de lecture

11 article(s) - ajoutée le 01/07/2020
Clé de voûte d'une infrastructure Windows, Active Directory est l'une des cibles les plus appréciées des attaquants. Les articles regroupés dans cette liste vous permettront de découvrir l'état de la menace, les attaques et, bien sûr, les contre-mesures.
8 article(s) - ajoutée le 13/10/2020
Découvrez les méthodologies d'analyse de la sécurité des terminaux mobiles au travers d'exemples concrets sur Android et iOS.
10 article(s) - ajoutée le 13/10/2020
Vous retrouverez ici un ensemble d'articles sur les usages contemporains de la cryptographie (whitebox, courbes elliptiques, embarqué, post-quantique), qu'il s'agisse de rechercher des vulnérabilités ou simplement comprendre les fondamentaux du domaine.
Plus de listes de lecture