Notes de version

Changelog LABS351

Évolutions techniques et changements de la plateforme au fil des versions de LABS351.

LABS351 3.5.3 · Recherche, navigation et extraction

Recherche de symboles et navigation vers le code décodé

LABS351 3.5.3 étendra les fonctions de recherche et de navigation afin de relier directement les symboles, les sources du projet et le code machine décodé.

La recherche dans les sources permettra d’identifier les occurrences d’un symbole dans le document courant ou dans l’ensemble des fichiers du VFS, notamment afin de repérer les occurrences multiples et les symboles dupliqués.

Depuis la vue des symboles, la navigation vers le désassemblage s’appuiera directement sur l’adresse du symbole issue de l’analyse du binaire. LABS351 localisera la section de code correspondante, recherchera l’instruction associée puis positionnera automatiquement l’affichage sur la page et la ligne contenant le symbole.

Recherche dans les sources et le VFS
  • Recherche d’un symbole dans le document courant
  • Recherche dans l’ensemble des fichiers du VFS
  • Identification des occurrences multiples d’un même symbole
  • Repérage des symboles dupliqués dans les sources du projet
  • Conservation d’une distinction claire entre recherche dans les sources et navigation dans le binaire analysé
Navigation symboles → désassemblage
  • Navigation directe depuis la vue des symboles vers le code machine décodé
  • Localisation d’un symbole dans sa section .text ou __text
  • Recherche de l’adresse du symbole dans les instructions décodées
  • Sélection automatique de la page de désassemblage correspondante
  • Positionnement automatique sur l’instruction associée au symbole
  • Sélection visuelle de l’instruction correspondant à l’adresse du symbole
Extraction depuis le désassemblage

LABS351 3.5.3 introduira également des actions contextuelles permettant d’extraire proprement une sélection depuis la zone de désassemblage.

L’extraction s’appuiera directement sur les instructions décodées associées aux lignes sélectionnées, indépendamment de leur représentation dans les différentes colonnes de l’interface.

  • Copie des instructions désassemblées
  • Copie des adresses et des instructions
  • Extraction des octets d’opcode
  • Copie d’une représentation complète du désassemblage sélectionné
  • Conservation des informations de décodage indépendamment de la présentation du tableau
Version prévue

LABS351 3.5.2 · Analyse des symboles et validation ABI

Analyse des symboles multi-format

LABS351 3.5.2 étend l’analyse native des symboles pour les binaires ELF, Mach-O et PE/COFF tout en conservant les sémantiques propres à chaque format exécutable.

La provenance des symboles, leur liaison et leur association aux sections sont désormais exposées plus précisément, tandis que les noms de symboles C++ sont normalisés et démanglés pour l’affichage.

BinaryAnalyzer identifie également un symbole candidat directement à partir des symboles présents dans le binaire analysé. Le symbole sélectionné est identifié visuellement dans la vue des symboles.

Analyse des symboles — synthèse technique
  • Analyse des tables de symboles ELF .symtab et .dynsym
  • Distinction entre symboles ELF dynamiques et réguliers, avec prise en compte des liaisons locales, globales, faibles, importées et non définies
  • Classification native des symboles Mach-O locaux, externes et importés
  • Classification des symboles, exports et imports PE/COFF
  • Démangling des symboles C++ et normalisation de leur affichage
  • Détection automatique d’un symbole candidat à partir du binaire analysé
  • Identification visuelle du symbole sélectionné pour ELF, Mach-O et PE/COFF
Validation ABI des registres SIMD/FP

LABS351 3.5.2 étend la validation ABI à l’exécution aux registres SIMD/FP non volatils devant être préservés par la fonction appelée.

Cette évolution complète la validation existante des registres généraux (GPR). LABS351 peut ainsi détecter simultanément une violation affectant un registre général et une violation affectant un registre SIMD/FP.

Sous ARM64/AAPCS64, la validation porte sur les 64 bits bas des registres V8 à V15. Sous Windows x86-64 avec l’ABI Microsoft x64, elle couvre les 128 bits des registres XMM6 à XMM15.

Lorsqu’une violation est détectée, le registre concerné est identifié dans les diagnostics ABI et signalé visuellement dans la vue des registres NEON ou XMM. Le statut ABI existant intègre désormais les violations GPR et SIMD/FP, tandis que la validation de la pile reste indépendante.

  • V8–V15 — validation des 64 bits bas sous ARM64/AAPCS64
  • XMM6–XMM15 — validation des 128 bits sous Windows x86-64 / Microsoft x64
  • Détection simultanée des violations GPR et SIMD/FP
  • Identification des registres concernés dans les diagnostics ABI
  • Signalement visuel des registres en violation dans les vues NEON et XMM
  • Validation de la pile conservée indépendamment de l’état des registres
Version actuelle

LABS351 3.5.1 · ARM64 / AARCH64

Introspection ARM64 étendue à l’exécution

LABS351 3.5.1 étend l’introspection ARM64 à l’exécution avec la capture complète des 32 registres architecturaux SIMD/FP de 128 bits, de V0 à V31.

Le contenu des registres NEON peut être inspecté sous forme de valeurs brutes sur 128 bits ainsi qu’au travers de représentations typées, notamment entier, Float32, Double64 et ASCII.

L’état flottant à l’exécution a également été étendu avec la capture et le décodage dédiés de FPSR et FPCR. Les états d’exception, les contrôles flottants et le mode d’arrondi actif sont exposés directement dans l’inspecteur de registres.

Capture à l’exécution
  • V0–V31 — 32 registres SIMD/FP de 128 bits
  • FPSR — registre d’état flottant
  • FPCR — registre de contrôle flottant
  • NZCV — indicateurs de condition
  • Interprétation SIMD typée
  • Validation indépendante de l’ABI et de la pile
Inspection des registres ARM64 NEON V0 à V31 dans LABS351 avec représentations typées
Inspection des registres NEON — les registres SIMD/FP ARM64 de 128 bits peuvent être inspectés sous forme brute ou interprétés selon plusieurs représentations de données.
Inspection de l’état flottant ARM64 FPSR et FPCR dans LABS351
Inspection de l’état flottant — les indicateurs d’état FPSR et les champs de contrôle FPCR, dont le mode d’arrondi actif, sont décodés directement depuis l’état machine ARM64 capturé.
PE/COFF — analyse des sections et contrôle des exports

LABS351 3.5.1 affine le traitement des binaires PE/COFF afin de distinguer la taille virtuelle d’une section de sa taille physique alignée dans le fichier.

Pour les sections PE, le débogueur prend désormais en compte VirtualSize lorsque celle-ci est inférieure à SizeOfRawData. Le padding d’alignement présent dans le fichier n’est ainsi plus transmis au moteur de décodage comme s’il appartenait à la zone virtuelle utile de la section.

Cette évolution reste strictement limitée au format PE/COFF et ne modifie pas le traitement des sections ELF ou Mach-O.

Contrôle des exports de symboles

LABS351 3.5.1 introduit également un contrôle explicite de la politique d’export des symboles lors de la génération de bibliothèques partagées.

Une nouvelle option de projet permet d’activer ou de désactiver l’ajout automatique des directives d’export par LABS351. Lorsqu’elle est désactivée, le comportement natif du linker sélectionné est conservé. Lorsqu’elle est activée, LABS351 génère explicitement les directives d’export correspondant aux symboles globaux éligibles.

PE/COFF — synthèse technique
  • Prise en compte de VirtualSize pour le décodage des sections PE/COFF
  • Exclusion du padding lié à SizeOfRawData lorsque celui-ci dépasse la taille virtuelle
  • Aucun changement du traitement ELF et Mach-O
  • Nouvelle option de projet pour l’export automatique des symboles globaux
  • Possibilité de laisser le linker gérer nativement les exports
  • Validation comparative du parsing des exports PE/COFF avec GNU objdump
Version 3.5.1