Description d'un BOOT normal

Lorque l'APPLE II est allumé (avec une ROM AUTOSTART ce qui est le cas de toutes les machines à partir du II+), le programme en ROM cherche s'il y a un contrôleur de disquette dans les slots en partant de 7 vers 1 c'est pourquoi on réserve le 7 au disque dur et le 6 au contrôleur de disquette.

Si un tel contrôleur est trouvé alors la ROM lui passe le contrôle en exécutant le programme du dit contrôleur qui se trouve en Cx00 sachant que x est le numéro de slot (donc sur une machine tout à fait configurée en standard ce sera $C600)

Vous noterez qu'il y a deux PROM sur une carte contrôleur APPLE, le programme de bootstrap est stocké sur la PROM P5. Il est accessible aisément en allant sous le moniteur (CALL-151 suivi de RETURN) puis en tapant C600.C700L (également suivi de RETURN). Pour la PROM P6 voir la rubrique relative au fonctionnement du Logic State Sequencer.
LE TRACE DE BOOT (FRONT DOOR TECHNIQUE)

Cette redoutable technique découle immédiatement de ce que l'on vient de voir : Quel que soit le programme protégé il ne peut être chargé QUE SI son secteur 0 de la piste 0 est standard...

Partant de là il suffit de changer quelques octets du programme de bootstrap pour ne charger que le secteur 0 en question et de suivre en pas à pas ce qui se passe. Changer la PROM ??? vous n'y pensez pas... donc comment faire ?!
Il suffit de déplacer le contenu de la ROM en mémoire en conservant l'alignement $x600. C'est à dire que vous recopiez le contenu de la PROM en $8600, $9600 ou n'importe quelle adresse de type $x600. Pour ce faire vous passez sous le moniteur (CALL-151) et tapez

9600 < C600.C700M suivi de RETURN

Vous observez en $96F8 le JMP $801 que vous remplacez par des BRK ($00) ou un JMP $9801 adresse à laquelle vous préciserez soit des BRK soit un JMP $FF65 (retour moniteur) ce qui donne la modification suivante:

96F8 : 4C 01 98 suivi de RETURN

9801 : 4C 65 FF suivi de RETURN


Puis après avoir inséré la disquette du programme dont vous ambitionnez de supprimer la protection, vous effectuez le lancement en manuel par la commande :

9600G suivi de RETURN

Magique, le drive se met en route comme s'il bootait normalement puis vous entendez un BIP et votre lecteur continue à tourner dans le vide. C'est fait vous avez ce que le programme devait charger en $800. Arrêtez le drive par la commande softswitch :

C0E8 suivi de RETURN

Ensuite vous regardez ce qu'il y a en $800, normalement vous avez le chiffre 1 qui correspond au nombre de secteurs chargés par la "PROM" et votre début de programme s'étend alors de $801 à $8FF que vous pouvez lire en assembleur par la commande .

801L suivi de RETURN... autant que nécessaire jusqu'à la fin de ce qui est chargé

ATTENTION si vous avez en $800 un autre chiffre cela signifie que la "PROM" a chargé autant de secteurs que le précise ce chiffre et ils sont de $800 à $xxx sachant qu'un secteur est une page de mémoire de $FF octets.
Exemple : si vous avez un $03 votre boot est chargé de $800 à $AFF


Ensuite le désassemblage de ce premier chargement vous explique ce qui se passe. Vous déplacez alors celui-ci dans la zone mémoire ad hoc ($9800 dans notre exemple) et vous effectuez les points d'arrêts adéquats en positionnant des JMP $FF65 ou des BRK pour être sûr de garder la main avant les passages aux endroits critiques et vous relancez en tapant la commande

9600G suivi de RETURN

Eh oui ! on fait un reboot mais cette fois la "PROM" va certes recharger le premier bootstrap mais fera la connexion sur $9801 au lieu de $801 et ce sera votre bootstrap modifié qui pilotera la suite. En procédant ainsi de pas en pas vous obtenez tout le programme, que vous devez désassembler pour comprendre ce qui se passe et réussir à ôter la protection.

Dans la pratique il est préférable de sauvegarder les morceaux de programmes extraits au fur et à mesure de façon à pouvoir à la fin reconstituer un fichier ou une disquette au format DOS 3.3. Prenons un exemple de programme qui se charge sans faire de contrôle par la suite : EDD 4 Plus

Pourquoi EDD ? parce que c'est un programme de copie des protections... qui est protégé au prétexte qu'il sert d'entraînement.