Re: Données embarquées à la fin du binaire...
Stephane Carrez via Ada-france <[email protected]> Thu, 17 Feb 2022 21:19:08 +0100
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Bonjour Stéphane, Pour résoudre ce type de problème et d'autres, j'ai crée "Advanced Resource Embedder". C'est comme cela que j'embarque le schéma SQLite dans le binaire de Porion (cf présentation Fosdem 2022). https://gitlab.com/stcarrez/resource-embedder Il y a plusieurs exemples pour montrer différents scenarios d'intégration. Je te conseille pour jeter un oeil: https://gitlab.com/stcarrez/resource-embedder/tree/master/examples/ada-help Et la technique que j'utilise dans Porion et qui permet d'avoir une table de String avec une requête SQL par chaîne: https://gitlab.com/stcarrez/resource-embedder/tree/master/examples/ada-lines La dernière version de ARE est disponible via Alire mais j'ai aussi des paquets Debian sur apt.vacs.fr. Le tout est complété par une doc qui n'est pas parfaite mais qui existe: https://resource-embedder.readthedocs.io/en/latest/ ... et une page man :-) Stephane On 17/02/2022 11:49, Stéphane Rivière via Ada-france wrote: > Bonjour à toutes et tous, > > > Avant de tenter une implémentation, je me demandais si quelqu'un avait déjà vu passer un truc de le genre ci-dessous (il me semble que oui, mais impossible de remettre la main dessus !). > > C'est dans un contexte Linux. J'avais codé le truc ci-dessous il y a très longtemps sur du Windows... sans contrôle d'intégrité de l'exe... et pas en Ada... > > > On a le fichier binaire d'un coté et un fichier (SQLite) > > Au premier lancement, le binaire regarde s'il embarque en fin de binaire un tag CRC64. Si pas de CRC64, alors ouvre le fichier SQLite > > À la terminaison, le binaire ferme le fichier SQLite et l'ajoute à la fin du binaire avec un offset pour la position du début du fichier et un CRC 64 d'intégrité taggué à la toute fin. On ne touche donc pas à l'exe, on se "contente" de lui rajouter des données après sa fin d'origine. > > Au lancement suivant, le binaire détecte le tag CRC, vérifie l'intégrité, copie les données dans un fichier SQLite temporaire et l'ouvre. > > À la terminaison du programme, et après lecture de l'offset, on écrase la version précédente en fin de fichier binaire avec le fichier SQLite temporaire, on recalcule et écrit le CRC et on ferme le tout. > > > Entre Apparmor, signature numérique de fichier, et contrôle d'intégrité, je me demande si c'est seulement aujourd'hui réalisable (sous Linux). > > > "Adamantinement vôtre" :) > > -- > Stéphane Rivière > Ile d'Oléron - France > > > _______________________________________________ > Ada-france mailing list > [email protected] > https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france _______________________________________________ Ada-france mailing list [email protected] https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france