Comment fonctionne réellement la JVM
La Java Virtual Machine transforme le code source lisible par l'homme en instructions matérielles grâce à un processus multi-phasé débutant par la compilation en bytecode indépendant de la plateforme. Un sous-système de chargement de classes applique le modèle de délégation parentale pour charger les classes de manière paresseuse, en privilégiant le Bootstrap Class Loader afin d'éviter les attaques de remplacement des classes principales. L'exécution repose sur un moteur hybride où l'interpréteur garantit un démarrage rapide tandis que le compilateur Just-In-Time optimise les points chauds fréquemment exécutés en code machine natif. Cette architecture gère la mémoire via un tas partagé et des piles par thread, récupérant automatiquement les objets inaccessibles grâce à la collecte de déchets malgré les éventuels délais de latence.
Comment extraire le ROM de démarrage de Game Boy à partir d'une photo de puce
Travis Goodwin démontre l'extraction du ROM de démarrage de Game Boy en photographiant la puce de silicium après avoir chimiquement retiré le boîtier protecteur de la puce avec de la résine de pin bouillante. Cette technique d'ingénierie inverse physique contourne les mécanismes de protection contre la copie qui empêchent la lecture du logiciel, révélant le code spécifique de contrôle des marques qui restreint le démarrage aux cartouches contenant le logo Nintendo. Le processus repose sur des motifs de bits visibles en surface plutôt que sur des failles de tension complexes, permettant l'extraction de la séquence de démarrage et du son directement à partir d'images microscopiques. Cette méthode, détaillée dans le livre de Goodwin et open-sourcée sur GitHub, fournit un flux de travail reproductible pour l'analyse des systèmes embarqués où le dumping logiciel traditionnel est impossible.