DÉPROTECTION DE PROGRAMMES BASIC
Un DRAPEAU : 0=faux lorsque le programme est listable.
255=&HFF (-1 vrai) quand il est protégé.
PROTECTION MO5 : DRAPEAU &H217F
L'exécution de LIST passe par l'adresse &H21FB située en RAM et
contenant un JUMP en &HC324. En mode direct on ignore le travail fait par
le BASIC à partir de cette adresse. Effectuer soit un RTS (retour de sous programme) soit un JUMP direct en &HEOE9.
taper NEW NEW
POKE &H21FB,57 POKE &H21FC,&HE0
POKE &H21FD,&HE9
charger le programme : LOAD "....." LOAD "....."
Le programme est listable, le modifier éventuellement, puis le
sauver, éviter de l'exécuter. Il est prudent de remettre le basic en place.
drapeau mis à zéro : POKE &H217F,0 POKE &H217F,0
restaurer le basic : POKE &H21FB,&H7E POKE &H217F,&HC3
POKE &H217F,&H24
Ces méthodes échouent sur certains programmes. Essayer de
déplomber avec un TO7, sinon manipulations style TO 9. On peut parfois
surmonter ainsi une IO error du magnétophone.
PROTECTION TO 7 : DRAPEAU &H61A2
On utilise le fait que l'ordre EXEC (RUN progemme binaire) n'est pas
protégé et que WEND n'est pas utilisé.
Taper: POKE &H6236,&HOF 'CLR
POKE &H6237,&HA2 '$61A2 direct
POKE &H6238,&H39 'RTS
puis charger le programme et taper; WEND (TO7) ou EXEC &H6236 (TO9).
Pour interdire la déprotection par EXEC 1216 écrire en première ligne :
1 IF PEEK(0)=32 THEN POKE &H61A2,255
PROTECTION TO 9 basic 128 : DRAPEAU &X6179
Valider les lignes suivantes :
LOAD" PROG"
OK
NEW
OK
BANK 1:FOR A=&HA005 TO &HAOFF:IF PEEK(A)=0 THEN ? HEX$(A) ELSE
NEXT
AOXX
OK
POKE &HA002,&HXX'XX Deux derniers octets de la valeur AOXX
Ces manipulations sont assez longues. Utiliser PROTECT que l'on
charge avant le programme protégé. Le text des calculs restant en
mémoire écran
10 INPUT"Nom du programme„;P$
20 PRINT"Valider les lignes suivantes :'
30 PRINT:PRINT"LOAD"CHR$(34)"P$"CHR$(34)
40 PRINT:PRINT"NEW
50 PRINT:PRINT"BANK 1: FOR A=&HA005 TO &HAOFF:IF PEEK(A)<32 THEN
PRINT HEX$(A) ELSE NEXT
60 PRINT"AOXX
70 PRINT:PRINT"POKE &HA002,&HXX'XX Deux derniers octets de la
valeur AOXX trouvée ci-dessus."
80 LOCATE O,CSRLIN-11
On retrouve la partie de programme située en banque 1. Travail
analogue dans les autres banques pour les programmes de plus de 16 k
(en utilisant la banque 1 pour la variante du programme PROTECT).
CQFD
[TRUC] Protection et déprotection sur les Thomsons :)
Modérateur : Politburo
- James
- Fonctionne à 1200 bauds
- Messages : 1087
- Enregistré le : 10 sept. 2003 13:02
- Localisation : Alsace - Terre - Fédération des planètes Unies
- Contact :
[TRUC] Protection et déprotection sur les Thomsons :)
--------------> Recherche Atari 400/800, TO9+, Goupil
Re: [TRUC] Protection et déprotection sur les Thomsons :)
Je ne comprends pas les deux derniers poke.James a écrit :POKE &H21FB,57 POKE &H21FC,&HE0
POKE &H21FD,&HE9
Si tu fais un poke 8699,57, c'est un rts à la place du jump (126). Donc les deux autres octets qui donnent l'adresse sont parfaitement inutile.
Ce poke permet d'éviter les messages d'erreur (toutes les erreurs) dont la fameuse error 61. Comme le dis James. Pour ne pas avoir de problèmes par la suite, car le programme n'est plus protégé par les erreurs et donc risque de bug, vaut mieux restaurer l'adresse 8699 avec sa valeur d'origine soit 126 aprés la déprotection et la sauvegarde du programme.
Il n'y a plus qu'a lire le programme déprotégé préalablement enregistré