Q. J'ai un code hexadécimal exécuté sur une machine. Comment puis-je calculer la somme de contrôle de l'intégralité du code lors de l'exécution?Contrôle CRC Runtime
Répondre
Vous devez avoir un accès en lecture à l'ensemble du segment de code. Cela implique probablement d'obtenir des symboles de l'éditeur de liens qui référencent les première et dernière adresses du code. Vous pouvez convertir ces adresses en un pointeur de données de taille appropriée et exécuter n'importe quel algorithme CRC ou somme de contrôle commun que vous souhaitez sur le segment de code.
Pour vérifier le CRC, vous devez connaître sa valeur faisant autorité. Cela peut être fait après la liaison en calculant le CRC et en le corrélant dans l'initialiseur pour une variable appropriée. Dans les systèmes embarqués où j'ai utilisé une technique similaire comme vérification d'intégrité avant de remplacer le firmware dans une mise à niveau, j'ordonne généralement la carte mémoire de l'image du firmware pour commencer par une structure de données en lecture seule. Il est facile d'écrire un utilitaire pour calculer le CRC de l'image et réparer la structure. Le chargeur de démarrage du système embarqué peut ensuite vérifier ce CRC pendant le démarrage pour déterminer si un microprogramme valide est présent et revenir à un utilitaire de mise à jour si ce n'est pas le cas. Bien sûr, l'utilitaire de mise à jour utilise ce même CRC pour valider une nouvelle image avant de clignoter.
Edit: Quelques références sur CRC, dans le cas où son utile:
- 1. Calcul CRC SourceSafe
- 2. Données/fichier Python Crc
- 3. algorithme crc difficile
- 4. Détermination de l'algorithme CRC à partir de données + application CRC intégrée.
- 5. Le CRC vérifie les fichiers
- 6. Hwo puis-je convertir ce contrôle CRC de Matlab en C#?
- 7. Qu'est-ce qu'un CRC en cours d'exécution?
- 8. Intégration .Net Runtime
- 9. Erreur Visual Studio Runtime
- 10. Silverlight Runtime Error 1001
- 11. VB6 Runtime Type Retrieval
- 12. MMC .Net Runtime Version
- 13. Java task runtime
- 14. ASP.NET Runtime organiser mes contrôles
- 15. C Objets Runtime, limites dll
- 16. C++ Runtime formatage de chaîne
- 17. Linq To XSD at runtime
- 18. NHibernate Readonly Entities at Runtime
- 19. Documentation pour Dynamic Language Runtime?
- 20. MS-Access 2007 Runtime SendObject Crash
- 21. comment puis-je installer Apache Portable Runtime
- 22. Création de bibliothèques Windows C++ sans runtime?
- 23. Visual C++ Runtime Library Linker Malheur
- 24. initialisation du composant - Runtime vs DesignTime
- 25. jQuery profilage - mesure complète onReady runtime
- 26. Erreur RunTime '70' Autorisation refusée dans VB6
- 27. python par rapport à l'empreinte Java runtime
- 28. Erreur .NET Runtime 2.0 dans un service
- 29. Comment transmettre en Runtime un index de ligne pour ListView?
- 30. Comment transmettre en Runtime un index de ligne pour DataView?
utiliser probablement un algorithme CRC comme vous l'avez mentionné? –
Pouvez-vous expliquer cela un peu plus? – BobbyShaftoe
Quelle langue? C++ a une bibliothèque CRC dans Boost, Perl en a plusieurs sur CPAN, et je suis sûr que Python, PHP, Scheme et fondamentalement tous les autres langages en ont un. –