==Phrack Inc.== Volume n°1, Édition n°1, Article 3 sur 8 ////////////////////////////////////////////////////////////////////////////// / / / Boot Tracing facile / / Écrit par / / ________________ / / \Cheap/ \Shades/ / / \___/ \____/ / / 2600 CLUB! / / / ////////////////////////////////////////////////////////////////////////////// \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ \ \ Soyez sur d'appeler \ \ \ \ Kleptic Palice......(314)527-5551 \ \ 5 Meg BBS/AE/CF \ \ Metal Shop..........(314)432-0756 \ \ Elite BBS (Home of 2600 CLUB! \ \ and Phrack Inc. ) \ \ \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Il y a trois ou quatre ans, un de mes bon amis donnait un cours de programmation ML pour Apple série 2. En tant que bon amis, et aussi assez ennuyé par le cours, je lui ai posé la question du cracking des jeux Apple. Il m'a repondu qu'il avait passé le dernier été à cracker des programmes. Il m'a montré une méthode qu'il avait mis au point tout seul, le boot tracing. Il ne savait pas que cette technique était déjà assez populaire, mais il avait developpé sa propre méthode pour le faire qui, en ayant lu beaucoup de papiers sur le sujet, est la plus simple que j'ai jamais vue. (Pour vous donner un exemple, j'ai SNOGGLE (je n'y ai jamais joué mais un amis l'avait sur son disque) qui est chargé complètement en mémoire, prêt à être dumpé en presque 12 minutes.) OK, pour commencer, tous les programmes peuvent être boot tracé. Le seul problème est que certains ne seront pas facilement convertibles en fichiers. Les seuls programmes que vous devriez essayer si vous n'êtes pas vraiment bon en ML sont ceux qui se chargent entièrement en mémoire. Pour pouvoir y arriver, vous allez avoir besoin d'un enregistreur à cassettes. (Ne vous inquiétez pas, le programme que nous allons sauvegarder ne prendra pas trop longtemps à l'être.) Je n'aime pas du tout étudier la théorie qu'il y a derrière quoi que ce soit alors je ne vous donnerai aucune théorie derrière tout ceci. Si vous voulez de la théorie, lisez d'autres articles qui le font mais moins facilement. D'abord, soyez sûr que votre enregistreur à cassettes fonctionne en BLOADant quelques programmes et en tappant : CALL -151 AA60.AA73 Vous verez quelque chose du genre : AA60-30 02 xx xx xx xx xx xx AA68-xx xx xx xx xx xx xx xx AA70-xx xx 00 08 ou n'importe quoi d'autre... Le 30 02 est la longueur ($0230 octets). Le 00 08 est l'adresse de début ($0800). Bien, maintenant, vous allez devoir essayer et sauvegarder le programme. Tappez : 800.A2FW (A2F=$800+$230-1) 1000<800.A2FM 800:00 N 801<800.A2FM 800.A2FR 1000<800.A2FV Une fois que vous êtes sûr que la cassete fonctionne (de la façon la plus stupide en essayant sur //c!) on peut commencer le travail sérieux... Premièrement, mettez le code du démarrage de la ROM [NDT: ROM Boot-up code] dans la RAM ... (toutes les étapes se font à partir du prompt * du moniteur.) 86F9:5C FF (Maintenant, chargez l'étape 1 du boot.) 8600G C0E8 (arrête le lecteur.) (À ce stade, vous avez booté correctement sur le secteur 0 de la piste 0) Maintenant, puisque vous ne voudrez pas écraser ce que nous avons chargé jusque là, tapez : 8500<800.8FFM 86F9:01 85 8501L Voyons un peut ce que nous avons récupéré... Tout d'abord, regardons s'ils ont mis cette partie dans le buffer du clavier. (Beaucoup de programme le font et les articles de boot tracing que j'ai lus ne traitent pas vraiment cet aspect.) LDX 00 LDA 800,X STA 200,X INX BNE $803 JMP $211 (ou tout autre $2xx) (Parfois, ça se fait avec des Y au lieu des X.) À ce moment, nous allons bidouiller ce qu'il y a en $08xx. Mais nous ne devons pas nous en inquiéter. En fait, il faut trouver le JMP $2xx et le changer en 4C xx 85 en laissant les xx les mêmes. D'habitude, c'est l'instruction suivante mais juste pour être sûr... OK, maintenant, parcourez le code à la recherche d'autre JMP et si vous en trouvez un directe (les indirects ont l'adresse entre parenthèses), changez-le en 4C 5C FF, mais écrivez l'adresse qu'il utilisait avant d'être changés pour savoir où regarder ensuite. Ce sera sûrement 301 ou B700. Si c'est B700, vous avez de la chance. Si c'est 301, vous allez devoir travailler un peut plus. Si c'était un JMP indirecte, il y a plus de chance que ça soit JMP ($003E). Ce n'est pas le cas si vous l'aviez changé en 4C 5C FF et alors, à partir du moniteur, verifiez 3E et vous verrez que 3E est 00 et 3F est 3E... Le moniteur utilise cette zone dans les pages zéro pour sa plage mémoire actuelle. Donc, tout ce que vous devez faire, c'est : 8400:A5 3F 00 20 DA FD A5 3E 20 DA FD 4C 5C FF Et alors, changez ce saut indirecte en 85xx:4C 00 84 (Si ce saut est tout autre que 3E, alors, il y a de forte chance que vous n'ayez qu'à y regarder avec le moniteur sinon d'ecrire une petite fonction comme celle au dessus pour imprimer l'adresse cachée. (Oh, vérifiez la zone après la prochaine exécution. Pour l'instant, changez-la en 4C 5C FF.)) De toute façons, ce petit jeu n'effectuera probablement pas plus de deux ou trois chargement, à chaque fois, placez la nouvelle partie chargée vers un autre endroit de la mémoire et changez le saut en saut vers le moniteur (4C 5C FF) et le saut de la partie précédante vers la partie déplacée. Quand vous trouverez la partie qui fait un JMP vers une partie haute de la mémoire (habituellement $B700) vous aurez presque finis. La sortie de la fonction sera le plus probablement le début du programme. Une fois que vous l'avez interceptée, tout ce que vous aurez à faire sera de sauvegarder tout ça dans la cassette et relancer le DOS. L'adresse de début pour la sauvegarde devrait être celle où la fonction en B700 finissait. Si c'est plus grand que $6000, commencez à sauvegarder vers $2000 pour avoir une image haute résolution [Hi-Res]. En utilisant WXYZ pour votre adresse de depart, tapez: WXYZ.9CFFW (Ceci aura le programe principal) 800.WXYZW (Sauver ceci au cas où il y aurait quelque chose de nécessaire, nous n'auront pas besoin de le démarrer à partir de rien) Ok, maintenant, on redémarre : C600G (avec un disque DOS dans le lecteur!) CALL -151 WXYZ.9CFFR Bsave PROGRAMM,A$WXYZ,L$ (qu'importe ce que vaux 9CFF-WXYZ+1) Si ça vous donne une erreur, c'est que le fichier est trop gros. Un petit patch DOS pour arranger les choses : A964:FF Et on réessaie. Maintenant que le programme est sauvegardé, essayez et lancez-le. (C'est une bonne idée de retirer le disque du lecteur, rien ne nous dit ce que le programme essaiera de faire s'il voit que DOS est chargé en mémoire.) WXYZG (Si ça marche, juste pour être sûr que c'est un bon crack, éteignez le système et BRUNez le après un démarrage à froid.) Si vous avez sauvegardé l'image avec le programme, il y a de forte chance que ça ne se lance pas. Vous devrez ajouter un JMP vesr 1FFD pour sauter vers le programme principal. Alors, re-BSAVEz-le avec une adresse de départ de $1FFD, et ajoutez 3 à la longueur. Si le programme essaie d'aller dans le lecteur pendant qu'il fonctionne, je suggère que vous laissiez tomber jusqu'a ce que vous compreniez le fonctionnement des disque non-DOS. (Mais si vous le faisiez, vous ne seriez probablement pas en train de lire ceci.) Si vous avez un arrêt vers une adresse plus petite que $2000 alors, vous aurez besoin d'aller dans le deuxième programme que vous avez sauvé sur la cassette. Mette-y un JMP à $800 vers le programme principal et sauvez tout le bazard. Si ça ne fonctionne toujours pas, vous allez avoir besoin de beaucoup d'imagination. Maintenant que vous avez réussi à faire fonctionner le truc, c'est le moment de regarder ce qui est utile et ce qui gaspille de la mémoire. C'est à partir de là que je ne peux plus vraiment vous aider mais faites simplement en sorte d'avoir une copie fonctionnelle et avant de faire chaque test, éteignez la machine pour retirer tout ce qui pourrait rester. Amusez-vous bien et bonne chance... ________________ \Cheap/ \Shades/ \___/ \____/ 2600 CLUB! Soyez sûr et récupérez une copie de PHRACK INC., disponibles sur tout les BBS/AE sympatiques n'importe où. [Traduit de l'anglais par TboWan]