Trouver des cartographies dans un binaire brut sans DAMOS

Pourquoi l’analyse du binaire brut est essentielle pour la préparation du Smart Roadster

Si vous souhaitez trouver des cartographies ECU dans un binaire hexadécimal sans fichier DAMOS, vous vous engagez dans l’une des disciplines les plus enrichissantes — et les plus exigeantes — de la reprogrammation moteur. Un fichier DAMOS (ou A2L) vous fournit un répertoire complet de cartographies, étiquetées et prêtes à modifier. Sans lui, vous fixez des dizaines de milliers d’octets d’hexadécimal brut sans aucun repère. Pour le Smart Roadster 452 et son ECU Bosch MEG 1.1, les fichiers DAMOS complets sont rares dans le domaine public, ce qui signifie que toute personne sérieuse dans la préparation de cette voiture depuis les bases doit savoir localiser, identifier et valider les cartographies manuellement. Ce guide vous présente l’approche systématique utilisée par les professionnels : de la reconnaissance des structures de données au recoupement avec le comportement physique du moteur. Aucune connaissance préalable en assembleur n’est requise, mais la patience et la rigueur sont indispensables.

Comprendre le paysage binaire avant de commencer à chercher

Avant de partir à la chasse aux cartographies, vous devez comprendre ce que contient réellement un binaire de firmware. L’image flash de la MEG 1.1 fait typiquement 512 Ko. Cet espace est partagé entre le code exécutable (les routines que le processeur exécute), les données constantes (valeurs fixes comme les calibrations de capteurs) et les tables de correspondance — les cartographies et courbes que vous souhaitez modifier. Les régions de code sont denses, irrégulières et contiennent de nombreuses séquences d’octets répétées caractéristiques du C compilé ou de l’assembleur. Les régions de cartographies, en revanche, tendent à être structurées, monotones et régulières.

Ouvrez votre binaire dans un éditeur hexadécimal ou dans WinOLS. Si vous débutez avec cet outil, ce tutoriel pour débutants sur l’ouverture d’un binaire Smart Roadster dans WinOLS vous aidera à vous repérer avant de plonger dans la recherche manuelle de cartographies. Dans WinOLS, passez en vue cartographie 8 bits ou 16 bits et faites défiler le fichier. Votre œil apprendra rapidement à distinguer les sections de code plates des dégradés progressifs et des motifs répétitifs qui caractérisent les données de calibration.

Ordre des octets et largeur des données

La MEG 1.1 utilise une architecture dérivée du Motorola HC12 avec un ordre des octets big-endian. Les valeurs 16 bits sont stockées octet de poids fort en premier. Lorsque vous lisez un mot 16 bits à l’offset 0x1A00, la valeur est (byte[0x1A00] << 8) | byte[0x1A01]. Mal identifier l’ordre des octets est l’une des erreurs les plus fréquentes chez les débutants — une cartographie de pression de suralimentation lue en little-endian n’a aucun sens, tandis que les mêmes données en big-endian donnent une courbe de pression cohérente. Confirmez toujours l’ordre des octets dès le début en trouvant une valeur de référence connue (comme le coupe-régime, généralement autour de 7 200 tr/min encodé en 0x1C20) et vérifiez quelle endianness produit un nombre physiquement plausible.

Reconnaissance de motifs : la technique centrale pour trouver des cartographies ECU dans un binaire hex

La méthode pratique pour localiser des cartographies sans DAMOS repose sur la reconnaissance des signatures que les tables de calibration laissent dans les données binaires brutes.

Tables d’axes et séquences monotones

Les axes — les points de rupture en régime moteur ou en charge qui indexent une cartographie — sont presque toujours des séquences monotoniquement croissantes. Un axe de régime moteur pourrait lire : 800, 1 200, 1 600, 2 000, 2 400, 3 000, 3 600, 4 200, 5 000, 6 000, 7 200 tr/min. En hexadécimal big-endian 16 bits, cela donne : 03 20, 04 B0, 06 40, 07 D0, 09 60, 0B B8, 0E 10, 10 68, 13 88, 17 70, 1C 20. Recherchez dans votre binaire des séquences de mots 16 bits qui augmentent par pas roughly égaux ou physiquement plausibles. Les tables d’axes font généralement entre 8 et 16 entrées sur la MEG 1.1. Une fois un axe trouvé, les données de cartographie qu’il indexe se trouvent presque toujours immédiatement après dans la mémoire, ou sont pointées par une table de pointeurs voisine.

Heuristiques de forme des cartographies

Les cartographies bidimensionnelles (axe × axe × valeur) sur la MEG 1.1 font typiquement 8×8, 12×8 ou 16×8. Les cartographies de pression de suralimentation, d’avance à l’allumage et d’enrichissement en carburant suivent toutes ce modèle. Dans WinOLS, une fois que vous sélectionnez une région et attribuez la bonne largeur, une véritable cartographie se révèle comme une surface lisse — des pics dans le coin haut régime/forte charge, des creux au ralenti. Une région de code aléatoire sélectionnée avec les mêmes dimensions ressemble à du bruit chaotique. Comparer les valeurs de cartographie de suralimentation entre les variantes 45 kW, 60 kW, 66 kW et 74 kW est un moyen fiable de valider croisée toute table liée à la pression turbo que vous pensez avoir trouvée : les valeurs doivent être physiquement cohérentes avec les pressions de suralimentation connues de chaque variante.

Valeurs sentinelles de checksum

Le firmware de la MEG 1.1 contient des blocs de checksum qui protègent les régions de calibration. Ceux-ci apparaissent sous forme de paires de mots 32 bits à des offsets fixes — le checksum stocké et son complément. Apprendre à reconnaître ces sentinelles est précieux car ils encadrent la région de données de calibration, réduisant considérablement votre zone de recherche. Comprendre le fonctionnement de ces blocs est également critique car toute modification des données de calibration sans mise à jour du checksum entraînera le refus de l’ECU de booter depuis le binaire modifié — comme expliqué en détail dans l’article sur pourquoi la correction du checksum est indispensable avant d’écrire un binaire modifié.

Outils et méthode de travail pour la découverte manuelle des cartographies

Plusieurs outils accélèrent le processus une fois que vous maîtrisez les principes sous-jacents.

Recherche de cartographies WinOLS

WinOLS inclut une fonction de recherche de cartographies intégrée qui évalue les régions du binaire selon leur ressemblance avec les formes typiques de cartographies. Réglez les paramètres de recherche sur 16 bits big-endian, largeur 8 ou 12, et laissez l’outil noter chaque adresse de début de table possible. Les résultats sont classés par score de régularité. Ce n’est pas infaillible — des régions de code lisses peuvent obtenir un score élevé — mais cela élimine environ 80 % de l’espace de recherche immédiatement et vous laisse une liste restreinte de candidats à évaluer manuellement.

Éditeurs hexadécimaux avec scripting

Des outils comme 010 Editor prennent en charge les modèles binaires et le scripting. Vous pouvez écrire un court script qui parcourt le binaire à la recherche de séquences 16 bits monotoniquement croissantes de longueur 8 à 16, puis signale leurs offsets. Cela automatise la recherche d’axes et est particulièrement efficace pour le recoupement de deux binaires issus de révisions de firmware différentes — les données de calibration genuines se déplacent de manière prévisible entre les versions, tandis que le code se réorganise plus radicalement. Le langage de modèles binaires de 010 Editor est bien documenté et la communauté a publié des modèles ECU automobiles génériques adaptables à la MEG 1.1.

Analyse différentielle entre variantes

L’une des techniques les plus puissantes disponibles pour le Smart Roadster est le binary diffing — la comparaison de deux images ECU connues pour ne différer que dans une seule zone de calibration. Par exemple, un binaire SB2 60 kW et un 66 kW partagent le même firmware de base mais diffèrent dans les calibrations de suralimentation, de carburant et d’allumage. Charger les deux dans WinOLS et utiliser la fonction de comparaison de versions met en évidence exactement quels octets ont changé. Ces régions modifiées sont, par définition, des données de calibration et non du code exécutable. C’est ainsi que la communauté a cartographié pour la première fois la structure de calibration de la MEG 1.1, et c’est toujours le point de départ le plus fiable pour quiconque n’a jamais travaillé avec cette ECU. Si vous êtes curieux de savoir ce qu’un vrai fichier DAMOS vous offrirait gratuitement, l’article expliquant ce que contient un fichier DAMOS et pourquoi il transforme le flux de travail de préparation met cet effort manuel en perspective.

Valider les cartographies une fois que vous pensez les avoir trouvées

Trouver une table d’apparence plausible n’est que la moitié du travail. Vous devez la valider avant de lui faire confiance avec votre moteur.

Vérifications de plausibilité physique

Chaque valeur de cartographie doit avoir un sens sur le plan technique. Une cartographie d’avance à l’allumage doit montrer une avance maximale (environ 28 à 32° ATDC) à charge légère et régime modéré, se reculant sous forte pression turbo pour éviter le cliquetis. Une cartographie de cible de suralimentation doit afficher des valeurs cohérentes avec les limites matérielles connues du turbocompresseur Garrett 1238S — globalement 0,89 bar pour le 45 kW, montant jusqu’à 1,43 bar pour le Brabus complet. Des valeurs hors de ces plages indiquent soit une erreur de mise à l’échelle de votre part, soit que vous avez mal identifié la table. La documentation technique Bosch sur la calibration des capteurs de gestion moteur est une référence utile pour vérifier si une table de capteur suspectée a une mise à l’échelle physiquement plausible.

Recoupement avec les données en temps réel

La méthode de validation définitive consiste à effectuer une modification petite et conservative sur la cartographie suspectée, à flasher le binaire modifié et à observer la réponse du moteur via les données OBD en temps réel. Si vous pensez avoir trouvé la cartographie de cible de suralimentation, augmentez une cellule en mi-régime de 50 mbar et vérifiez si la pression turbo mesurée à ce point de régime et de charge augmente d’environ la même quantité. Cette validation en boucle fermée confirme à la fois l’identité de la cartographie et son facteur d’échelle simultanément. Elle nécessite une interface OBD fiable et une ECU qui acceptera votre flash — deux prérequis pour tout travail de préparation sérieux.

La connaissance communautaire comme vérification de bon sens

La communauté Smart Roadster a accumulé une connaissance collective considérable sur les emplacements des cartographies MEG 1.1. Les fils de discussion sur Smart Car of America Forums et la communauté européenne de passionnés Smart contiennent des tables partielles d’offsets de cartographies contribuées par des préparateurs qui ont réalisé ce travail pendant de nombreuses années. Traitez les offsets issus de la communauté comme une hypothèse de départ plutôt que comme une vérité absolue — les différences de version de firmware signifient qu’un offset correct pour la version 1037371568 peut être décalé de quelques octets dans une révision antérieure. Vérifiez toujours par rapport à votre binaire spécifique.

Erreurs courantes lors de la recherche de cartographies dans des binaires bruts

Même les préparateurs expérimentés commettent ces erreurs en travaillant sans DAMOS sur une ECU inconnue.

  • Confondre des constantes de code avec des données de calibration. Le code C compilé contient de nombreuses valeurs numériques fixes qui ressemblent à première vue à des cartographies. Si une région ne répond pas aux modifications de manière physiquement prévisible, c’est probablement du code.
  • Ignorer les facteurs d’échelle. Une table de suralimentation peut stocker des valeurs en unités de 10 mbar, ou comme un pourcentage d’une référence interne. Une plage physiquement implausible indique presque toujours une incompréhension de la mise à l’échelle, pas une mauvaise table.
  • Modifier sans correction du checksum. La MEG 1.1 refusera de démarrer depuis un binaire avec un mauvais checksum. Chaque session de modification doit se terminer par une mise à jour du checksum — sans exception.
  • Supposer les dimensions de la cartographie par inspection visuelle seule. Une table 16×4 est très différente d’une table 8×8 pour les mêmes données. Testez toujours plusieurs hypothèses de largeur avant de conclure que vous avez trouvé la bonne structure.
  • Travailler à partir d’une lecture corrompue. Une seule erreur d’octet dans le dump binaire original fausse toute analyse qui en découle. Vérifiez toujours votre lecture flash par rapport à une deuxième lecture avant de commencer toute analyse.

Tout assembler : un flux de travail pratique pour démarrer

Pour trouver des cartographies ECU dans un binaire hexadécimal sur le Smart Roadster MEG 1.1, suivez cette séquence. Premièrement, obtenez deux binaires ou plus de variantes de puissance différentes et faites un diff pour identifier les limites de la région de calibration. Deuxièmement, dans ces limites, lancez la recherche de cartographies WinOLS avec les paramètres 16 bits big-endian et examinez les meilleurs candidats. Troisièmement, identifiez les tables d’axes en cherchant des séquences 16 bits monotoniquement croissantes de valeurs physiques plausibles (régime, charge, température). Quatrièmement, reconstruisez la cartographie 2D en lisant le bloc de données immédiatement après les axes, en testant plusieurs hypothèses de largeur jusqu’à ce qu’une surface lisse apparaisse. Cinquièmement, validez la mise à l’échelle en recoupant des valeurs connues — par exemple, l’avance à l’allumage au ralenti doit être proche des valeurs publiées dans la documentation d’atelier Smart. Sixièmement, effectuez une modification de test minimale, mettez à jour les checksums et flashez pour valider. Septièmement, documentez vos découvertes avec les offsets, les dimensions et les facteurs d’échelle pour que le prochain préparateur bénéficie de votre travail. C’est lent la première fois. À la cinquième cartographie, cela devient presque intuitif.

Maîtriser la capacité à trouver des cartographies ECU dans un binaire hexadécimal sans DAMOS est ce qui distingue un vrai préparateur ECU de quelqu’un qui applique simplement des fichiers préécrits. Pour le Smart Roadster 452, où les données de calibration d’usine sont rares et où les bénéfices d’une reprogrammation bien réalisée sont significatifs, cette compétence est particulièrement précieuse. La MEG 1.1 est une ECU bien structurée, et avec les techniques décrites ci-dessus — analyse différentielle, reconnaissance de motifs, vérifications de plausibilité physique et validation en boucle fermée — son paysage de calibration devient navigable. Prenez votre temps, documentez tout et ne flashez jamais un binaire non validé sur une voiture à laquelle vous tenez.