Disk : Gdf07_2.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
A A$0000 (000000) L$0982 (002434) 013 HELLO
B A$1000 (004096) L$00F8 (000248) 002 VERIF.LOCKSMITH
GOGS
B A$0901 (002305) L$064E (001614) 009 VERIF.LOCKSMITH GOGS.S
T A$0000 (000000) L$0E00 (003584) 014 T.VERIF.LOCKSMITH GOGS
T A$0000 (000000) L$0F00 (003840) 015 T.INTRODUCTION
T A$0000 (000000) L$5800 (022528) 088 T.COURS 7.2 REVISION 1.00
B A$0901 (002305) L$0183 (000387) 003 BOOT COUNTER.S
B A$BB00 (047872) L$003E (000062) 002 BOOT COUNTER
B A$0901 (002305) L$0CC5 (003269) 014 SERIAL NUMBER.S
A A$0000 (000000) L$014C (000332) 003 BOOT COUNTER.DEMO
A A$0000 (000000) L$0426 (001062) 006 BOOT COUNTER INSTAL.PRG
B A$0901 (002305) L$090B (002315) 011 BOOT COUNTER.PRG.S
B A$BB00 (047872) L$0086 (000134) 002 BOOT COUNTER.PRG
T A$0000 (000000) L$1500 (005376) 021 T.GODFATHER RACONTE...
B A$8000 (032768) L$014A (000330) 003 SERIAL NUMBER
B A$0300 (000768) L$0033 (000051) 002 SNBR.DISK.OBJ
A A$0000 (000000) L$0394 (000916) 005 SNBR.INSTAL
T A$0000 (000000) L$1000 (004096) 016 T.COURS 7.2...2ND FICHIER
T A$0000 (000000) L$0A00 (002560) 010 T.LES PROGRAMMES DE CE DISK
T A$0000 (000000) L$1100 (004352) 017 T.PARRAINAGE
This catalog contains 20 files. 0 were DELETED.
----------------------------------------------------------------------
DOS 3.3 |
Download Cours GDF 07.2 rev 1.00 (gzipped) |
Lien | Article |
Introduction. | |
Cours 7.2 révision 1.00. | |
Cours 7.2 ... 2nd fichier. | |
Les programmes de ce disk. | |
Vérif Locksmith par The Gog's (ACS/THT). |
===============================================================================
INTRODUCTION COURS 7.2 : BOOT RUB'A BRAC
#1
By The Highlanders Team
===============================================================================
Update 20/09/88
Salut et salut!
Voici le menu alléchant de ce cours :
Les ruses du boot et de la mémoire version Apples de la
série II utilisées
ci-dessous sont simples.. l'apple II, II+, IIe, IIc boote sans effacer
la
mémoire. Si l'on presse pomme-ctrl-reset, seulement deux octets
sur chaque
page de 256 octets seront remis à la valeur #$A0... bref,
presque rien.
Moralité : on peut à peu près deviner, lors d'un
boot donné, quel a été le
programme utilisé précédemment.. ou plus
précisément, on peut vérifier si ce
n'est pas tel ou tel programme qui a été utilisé.
Sur cette idée bete mais auquel personne avant nous n'avait
pensée, vous
trouverez dans ce cours, en catalog sous forme brunable, et si vous
bootez
merlin pro dos 3.3, en catalog sous forme source, un programme
permettant une
nouvelle protection disk : le copieur checker, comme on l'a
baptisé..
c'est inédit, croyez le bien.. mais je vous en
dévoilerais tous les secrets!
Imaginez l'effet que l'on peut obtenir pour un plombage (ou pour amuser
vos
amis), à l'aide de cet utilitaire giga... : vous bootez un
original. vous
en faites une copie avec un utilitaire classique (locksmith rapide,
pourquoi
pas..si ca passe).. Vous bootez la copie, elle ne boote pas. Normal..
Seulement, vous bootez ensuite l'original, et il ne boote plus non plus!
Pourtant, si vous reflechissez, le seul programme utilisé entre
le moment où
votre original bootait et ou il ne boote plus, est - dans notre exemple
possible - le locksmith rapide!.. mais pourtant vous l'utilisez depuis
des
années, et jamais il n'a écrit sur l'original (puisque
celui-ci ne boote
plus!).. alors comment cela se fait il puisqu'il n'a rien pu - en toute
logique - modifier à l'original ??... magie ???
Ensuite, sur une base de plombage invisible au locksmith (voir cours
7!),
on a mis au point un "serial number" au boot, qui se modifie lui meme!
Vous bootez une disquette donnée.. au boot apparait par ex.
SERIAL NUM#0001.
Vous rebootez cette meme disquette et le meme numéro apparait.
Maintenant, vous copiez ce disk au locksmith rapide par exemple, et vous
bootez la copie!.. quel numéro apparait, alors que la copie est
censée etre
conforme à l'original ?.. SERIAL NUM#0002 bien sur!
Comment on fait ?... magie encore ???
Enfin, à l'aide de la rwts 3.3, je vous amene ici aussi un boot
counter..
c'est sympa.. inédit également.. peu etre pas vraiment
utile.. quoi que..
mais en tout cas, c'est très original et amusant..
Combien de fois avez vous booté un disk donné ?.. ce
programme vous le dira à
chaque boot, automatiquement..
Un cours sur les utilitaires ci-dessus, en plus de leurs sources super
décrits sous merlin pro, mais aussi un cours sur l'anti-boot
tracing!...
Quelques ruses pour s'en protéger! et comment vaincre ces ruses
bien sur!..
Godfather raconte : Lettre à Aldo (Reset) de Laurent (Rueil)..
feu-le-CCB !
Un vrai monument de l'histoire du cracking cette lettre!.. et vraie
bien sur!
Voici donc, pour vous, en exclusivité (!!!), pleins de belles
choses.. non ?
====================================== Je vous laisse avec le fichier
de cours!
===============================================================================
COURS 7.2 , Le cours "magique" : BOOT RUB'A BRAC
#1 By The Highlanders Team
===============================================================================
Update
20/09/88
Révision 1.00
Salut et salut !!
Vous trouverez dans ce cours, avec tous les sources commentés
sous merlin pro :
BOOT COUNTER
1.00
GDF+ACS Update 20/09/88
BOOT SERIAL
NUMBER
ACS Update 20/09/88
BOOT COPY CHECKER
1.00
GDF+ACS Update 20/09/88
N.B. : Les programmes boot counter et serial number tels qu'ils sont
présenté
ici, en catalog et en source ne sont pas les programmes complets tels
qu'ils
devront etre mis au boot d'un disk. Il faut y ajouter un petit
détail qui a
vraiment son importance : mais on va voir ça très en
détail ici.
===============================================================================
BOOT COUNTER
1.00
GDF+ACS
===============================================================================
Le but du jeu, pour commencer, est simple : on veut compter le nombre
de boot
que fait un disk donné.. pour cela, on va installer un compteur
de boot au
boot de ce disk donné, et à chaque boot, ce compteur
s'incrémentera d'une
unité comme à chaque fois que vous décrochez votre
téléphone par exemple..
Pour cela, il faut inclure une routine au boot donné qui affiche
le numéro
du boot en question, qui l'incrémente (un boot vient de se
produire, nom de
Zeus!), et qui sauvegarde dans ce meme boot, ce nouveau numéro
de secteur.
Pour voir un peu l'effet que ça donne, je vous ai rajouté
en catalog un prg
basic du nom de BOOT COUNTER.DEMO. Vous n'aurez qu'à faire un
RUN pour voir
le compteur défiler.
Avant de voir comment inclure cette routine toute prete au boot d'un
disk
de votre choix, il faut - je vous le disait ci-dessus - rajouter (dans
le
source sous le label "Out") une routine qui écrive ce secteur
sur le secteur
duquel il vient de se charger, après l'incrément du
compteur.
Pour cela, on va utiliser nos connaissances du boot 3.3 en supposant
que le
disk en question soit un disk possedant en effet, une rwts 3.3...
Il suffit de rajouter sous le label "Out", un LDA #2 STA $B7F4 pour
passer
en mode écriture, de mettre en $B7EC $B7ED la piste et le
secteur d'où vient
de se charger cette routine et donc sur lequel il faut
réécrire cette routine
contenant le nouveau compteur incrémenté, et en $B7F0
$B7F1 l'adresse basse
puis haute d'où se trouve en ram cette routine.
Vous trouverez en catalog sur ce disk la routine boot counter seule, et
le
fichier objet (et source) boot counter.prg (et boot counter.prg.s) qui
est la
routine à implanter. Il faut la mettre sous boot 3.3 en secteur
$05 de la
piste $00 (les fous du giga cours 12 doivent se mettre à
sourire.. non?)
et mettre en secteur $00 de cette meme piste, à l'octet $4A
(à l'endroit du
jmp ($08FD) ou jmp $B700, n'est ce pas?), un jmp $BB00 (4C 00 BB), et
ca,
à l'aide d'un éditeur de secteurs quelconque. (pour se
brancher sur cette
routine chargée automatiquement, depuis en secteur $5, en $BB00).
Attention!.. si votre routine est en $BB00, zone où se trouve le
buffer
nibble du dos (cf cours 12), elle sera effacée avant
écriture!.. il faut donc
la mover au préalable en ram extérieure au dos..
Mais pourquoi ce fatiguer, puisque je l'ai fait pour vous.
Vous pouvez utiliser mon "count'boot maker" en basic, et encore une fois
en catalog sur ce disk... Que de programmes pour ce rub'à brac
#2!! mais
uniquement pour les disks en boot 3.3.
Pour les autres boot, rien à faire, il faut utiliser le Accolade
boot.
(voir les godfather's products!, please). C'est vraiment le meilleur des
godfather's products, et vous ne pourrez vraiment pas le regretter,
croyez-le bien.
===============================================================================
Voici le source de la routine principale de ce boot counter :
*** Routine d'affichage ($0403 correspond au 3eme caract. de la page
texte)
LDX #0
L LDA BOOTTXT,X
BEQ EndL
STA $0403,X
INX
JMP L
*** Texte à afficher (suivi du numéro, sous le label
'SER')
BOOTTXT ASC "BooT #"
SER ASC "000"
HEX 00
*** Routine qui modifie le numéro de série ci-dessus
*** ($B0="0", $B1="1",...$B9="9", $BA => Retour à 00! en $B0)
EndL LDX
#2 ; On prend le
chiffre de gauche du numéro
Loop INC SER,X ;
on l'augmente..
LDA
SER,X ; on regarde si ce n'est pas
9+1
CMP
#$BA ;
BNE
Out ; non, alors on
sors.. le numéro a été changé!!
LDA
#$B0 ; oui, alors on le remet
à 0 et on incrémente celui
STA
SER,X ; juste avant.
DEX
; dex.
CPX
#$FF ;
BEQ
InitSER ;
JMP
Loop ; et on resaute à
la routine qui incrémente le count.
*** Routine de remise à zero du numéro de série si
arrive à 999
InitSER LDA #"0 ;
Remise à zero du numéro si on arrive à 999
STA SER
STA SER+1
STA SER+2
Out
NOP
; Sortie (l'entrée s'est faite pas un JSR)
RTS
Pour que le numéro soit sauvegardé sur le disk, il suffit
de modifier la
routine sous le label "Out" comme dans le source BOOT COUNTER.PRG.
Ceci étant juste la routine principale d'incrément.
===============================================================================
SERIAL NUMBER
1.00
THE GOG'S FROM ACS-DIJON
===============================================================================
Le principe est le suivant : soit un original (copiable..) tel
déplombage mode
d'emploi 9 par exemple...le tout dernier. J'ai envie de savoir à
peu près
combien de copies ont été faites en france de mon disk
que j'espère à très
large diffusion. Le programme serial number va me permettre de m'en
faire une
idée. En effet, le dep9 original booterait avec marqué
"SERIAL NUMBER #000001"
et la première copie faite de ce dep9 booterait avec "SERIAL
NUMBER #000002".
Comment cela se fait-il puisque le seul programme a etre intervenu est
le
locksmith qui n'a pas pour habitude de modifier ce genre de chose entre
les disks source et destination...? magie ??.. ca peut s'y apparenter..
mais en fait, ca se base plus sur une technique de plombage vue dans...
le cours 7!..
On y voyait comment obtenir un disk plombé avec une protection
format - donc
facilement vérifiable avec une mini routine sympa - mais qui se
lise
parfaitement au locksmith rapide. Et bien cette routine se base sur ce
principe
et quand elle détecte que le disk dans le drive n'est pas
"plombé" avec ce
format spécial sur un secteur donné, il en conclut bien
vite que c'est le
premier boot d'une copie de ce programme! il va donc se brancher sur un
routine
qui incrémentera le numéro de série (meme principe
que pour le boot counter),
qui sauvegardera ce nouveau numéro sur le disk, et qui
replombera le disk de
manière à ce que le numéro de série ne soit
modifié qu'une fois !...
On peut tout faire quand on est plombeur déplombeur, n'est ce
pas ?...
Le source commenté en catalog vous expliquera tout en
détail.. bien plus que je
ne pourrais le faire ici avec des mots d'etre humain. Il est mis en
$4000.
Si vous voulez l'utiliser de suite, vous pouvez tout simplement le
bloader
en $4000 à partir d'un secteur donné (en accès
direct). Le numéro du secteur
est indiqué dans le source (#$00 si vous n'y modifiez rien).
Un exemple, puisqu'il faut l'utiliser en accès direct : d'abord,
allez écrire
cette routine (avec sread/swrite du cours 7 ou avec le cours 3) sur le
secteur
$00 (si vous ne modifiez pas le source) d'une piste quelconque qui vous
offre
un secteur $00 libre. Prenez un fast boot maker quelconque, l'accolade
boot
(c'est ce qu'il y a de plus simple) ou encore, pourquoi pas, la bonne
vieille
rwts 3.3 (cf cours 3) pour faire le boot de votre soft, et servez vous
en pour
charger cette routine en $4000 (sauf si vous l'assemblez ailleurs avec
merlin
bien sur). Et faites un JSR $4000. Le numéro de série
s'affichera, et s'il
détecte une copie avant l'affichage, il se modifiera lui meme et
se
sauvegardera automatiquement en modifié sur le secteur duquel il
vient de se
charger. aucun probleme !..tout est automatique comme toujours !
Le plombage se fera dés le premier boot, et la routine sera
alors pleinement
opérationnelle dans les termes décrits dans l'intro et
dans ce fichier.
A chaque copie, le numéro s'incrémente sans que l'on
sache comment..
(en catalog, trouvez un serial instal.prg... automatique vous dis-je!)..
(et pour ce qui veulent en savoir plus, trouvez le source
commenté de cette rt)
===============================================================================
VERIF COPIE
GOGS
THE ACS-DIJON
===============================================================================
"La copie est interdite.. essayer de copier cet original risque de
l'endommager
définitivement!".. cette phrase, on l'a lue nombre de fois dans
des notices de
manuels pour faire peur aux acheteurs d'originaux qui voudraient en
faire des
copies (ou essayer d'en faire, tout au plus) pour leurs amis. mais bien
sur,
ce n'est que pur bluff : comment un original peut il se détruire
si on essaye
de le copier. si vous reflechissez comme tout le monde l'a fait
jusqu'à présent
vous arriverez vite à la conclusion qu'il est impossible qu'un
copieur
détruise votre original.. cette affirmaion sur la notice est
techniquement
purement impossile.. et pourtant..
Ce dernier programme est sans conteste le plus spectaculaire! le plus
magique!
Vous allez comprendre tout de suite pourquoi.. Le principe est
très simple en
fait, le programme est clair, et le résultat est très
impressionnant quand on
en fait une démo, et très démoniaque si on
l'utilise un jour sur un original...
Lorsqu'on boote un disk sur Apple II, la mémoire n'est pas
effacée.. ou au pire
en cas de pomme-ctrl-reset, à raison de 2 octets sur 256. bref,
presque rien..
suffisament pour que l'on ne puisse pas récuperer en état
de marche un prg
en mémoire, mais suffisament pour pouvoir tester quel programme
venait de
s'éxécuter.. et c'est éxactement ce que l'on va
faire ici.
Vous avez lu l'effet de ce programme dans l'intro.. voici le comment et
le
ce que ca apporte.
Quand on a un original, la première chose que l'on essaye
toujours - que l'on
soit déplombeur ou pas - est de le copier...et c'est bien
entendu interdit,
n'est ce pas ??.. alors ce que vous offre cette routine est la
possibilité de
tester la mémoire d'avant le boot pour voir s'il n'y restait pas
un bout de
copieur, quel qu'il soit.. ainsi, on essaye d'en faire une copie.. ca
ne marche
pas.. on boote la copie (ou l'original!), et le résultat est le
meme :
aucun des deux ne marche plus!.. quel que soit le copieur
utilisé !!.. (dans la
limite des copieurs les plus utilisés.. ici on en teste 8! mais
on peut en
tester 50 si vous en connaissez d'autres... on va voir comment).
Le programme boote et vérifie quand cette routine
s'éxécute, s'il reste
en mémoire des traces d'un locksmith rapide, d'un disk muncher,
et de quelques 5 autres copieurs bien répandus !.. et à
coup sur, si un de
ces programmes a été utilisé sur l'apple de boot
avant de booter cet original,
cette routine va le détecter.. et dieux sait ce qu'elle peut
alors faire de
votre original.
On va voir comment cette routine fait pour tester ces softs, mais avant,
quelques conseils concernant le résultat de la
vérification des copieurs,
dans le cas où elle repere l'utilisation (essai) d'un copieur
quelconque..
(cas du plantage, voyons les divers plantages possibles).
** la routine actuelle affiche simplement "vous venez de faire une
copie"
et plante simplement.. mais si on éteint l'apple,
la copie comme l'original
booteront parfaitement.. ca ne sert donc à rien
sinon à une démo du pouvoir
de cette routine. voyons le autres alternatives..
** si vous souhaitez brancher la routine "copieur! je vous deteste" sur
un
destruction totale de la disquette (sinon de l'original au
moins de la copie
ne soyons pas trop dur avec les pirates, s'il vous
plait!), il convient
que la disquette soit déprotégée en
écriture (pour pouvoir écrire dessus!)..
seulement, vous n'allez pas demander à
l'utilisateur d'une manière donc
très anormale pour lui "merci de
déprotéger votre original, je désire le
détruire car vous etes un copieur, merci de
respecter les menaces de la
notice et de bien vouloir oter l'encoche de protection
contre l'écriture !"
Le seul moyen, si vous voulez détruire son disk,
est de ne pas permettre,
meme pour l'original normal jamais copié de
l'utilisateur honnete
au possible, que le boot se fasse si l'original est
protégé en écriture.
Certains originaux (le dernier etait le très bon
jeu d'aventure 'faial'
de chez infogrames protégé par un
ex-déplombeur apple : softman !).
Faial donc, par exemple, bootait normalement si votre
original était
déprotégé en écriture et
refusait de booter (avec le message "otez la
protection écriture de cette disquette") s'il
étai protégé.
A ce moment là, pour l'utilisateur, il semblera
normal que le soft ne
boote (jusqu'à cette vérif destructrice!!!)
que non-protégé en écriture
et il n'hésitera pas à booter son original
comme sa copie ! et quelles
se fassent détruire. Logiquement il devrait booter
la copie, qui ne
bootera donc pas, puis booter son original..
Pour voir comment faire un test à la faial, je vous
donne le source
à la fin de ce cours, à mettre a boot avant
cette routine !!!...
mais c'est méchant de détruire un original,
non?!
** Sinon, à vous de voir ce que vous désirez faire..
Si l'original est déprotégé, vous
pouvez tuer la copie et l'original
en supprimant une option du jeu.. en "sabotant" votre
programme..
(voir silent service, qui nous emmenait toujours dans les
bombes
ennemies!)... à vous de voir.. vous avez le source
en catalog.
Suivez le source de ce programme, tout y est expliqué !
* Source verif locksmith
* plombage kill original
* by the gogs from the acs and gdf!
ORG
$1000
; Où vous voulez...
Essais
EQU $00
Start
LDA
#$00
; on teste le programme de copie n°0
STA Essais
Other ASL
ASL
TAX
LDA ADRESSE_TEST,X ;
Adresse à vérifier..
STA
$27
;
LDA ADRESSE_TEST+1,X ;
STA
$26
;
LDY
#$00
; octet vérifié (00 to ..)
LDA
($26),Y
; prend 1er octet..
CMP ADRESSE_TEST+2,X ; Valeur
à trouver ds cette adr.
BNE
H1025
; non egal... essais?
INY
;
LDA
($26),Y
; Adresse suivante à vérifier aussi
CMP ADRESSE_TEST+3,X ; valeur
à trouver ds cette adr.
BNE
H1025
;
JMP PrtCOPIE
H1025
INC Essais
LDA Essais
NBR_COPIEURS CMP
#$07
; Nbre de copieurs à tester!
BNE Other
RTS
*** Affiche mess "VS EN AVEZ FAIT UNE COPIE!" (mettez la routine que vs
voulez)
PrtCOPIE
JSR HOME
JSR HBA90
LDY
#$00 ; Affiche message "vs
avez fait.."
Lp0
LDA CopieT0,Y ; "une copie!"
BEQ Text1 ;
STA $052A,Y ;
INY
;
BNE
Lp0 ;
Text1
LDY
#$00 ; Affiche mess2 "copie!"
Lp1
LDA CopieT1,Y ;
BEQ Text2 ;
STA $06AA,Y ;
INY
;
BNE
Lp1 ;
Text2
LDY
#$00 ; Affiche mess "why?"
Lp2
LDA CopieT2,Y ;
BEQ KillRAM ;
STA $07AA,Y ;
INY
;
BNE
Lp2 ;
*** Routine qui détruit une partie de la RAM
KillRAM
LDY
#$00 ; Détruisez ce
que vous voudrez!!!
KillLp
STA $B600,Y ; (la ram
chargée.. ici la ram
STA $BA00,Y ;
occupée par une routine fast boot
INY
; sur laquelle on avait mis ce prg...)
BNE KillLp ; ram
allant en $B6 et $BA00...)
LDY #$00
LowAdr
STA Start,Y
INY
CPY #<LowAdr
BNE LowAdr ;
Plantage... (la carry doit etre à 0
LpInfinie
BEQ LpInfinie ; ou à 1.. pas
d'autre poss.)
CopieT0
ASC "ARGHHHH !!"
HEX 00
CopieT1
ASC "VOUS VENEZ D'EN FAIRE UNE COPIE."
HEX 00
CopieT2
ASC "POURQUOI ???"
HEX 00
ADRESSE_TEST HEX
0909C5EB ; Locksmith Rapide
HEX 0D12C221
HEX 0900D4D2
HEX 0900ACBB
HEX
0C00A232 ; Back It Up III
HEX
0D07A611 ; Nibbles Away II vA1
HEX
0F35A54D ; Disk Muncher 8.0
Voici, des commentaires sur ce programme..
On commence par le programme 0. On va prendre dans un table
nommée
ADRESSE_TEST, deux octets correspondant à une adresse ram
importante d'un
copieur donné et on va regarder si les deux octets contenus dans
cette
adresse et dans la suivante, sont les memes que les deux octets suivants
dans notre table. Si c'est le cas, cette table ayant été
faite en fonction
des divers copieurs les plus répendus, alors c'est que le
copieur en question
(dont il reste donc un bout en ram) vient d'etre booté avant ce
programme..
le test est donc "vous etes un copieur".
On teste ainsi 7 copieurs... mais on peut ralonger la table et le
nombre de
copieurs à tester s'il en vient de nouveaux performants!.. (dans
le source se
trouve le nombre de copieurs à tester et la table à
rallonger!)..
Comprendo ????
C'est court, c'est simple... exactement comme le fil à couper
les lasagnes!
Maintenant, avant de vous laisser.. voici la routine test_write_protect
repompée dans faial..
* Test write protect
* Godfather
START - LDX #$60 ; Slot6
STX $E3
TXA
ORA
#$01 ; Drive (1 ou 2).
TAY
LDA $C08A,Y
LDA $C089,X
LDA
$C08D,X ; Sense write protect
LDA $C08E,X
BMI Error
RTS
; Suite du boot.. le disk est déprotégé!
Error - LDX #0 ;
Affiche "déprotégez!"
Loop - LDA T,X
JSR $FDF0
INX
LDA T,X
BNE Loop
JMP
$C600 ; Reboot
T ASC "MERCI DE DEPROTEGER LE DISK
EN ECRITURE."
HEX 00
On a vu ci-dessus à quoi elle pouvait servir.. mais attention!
il faut la
glisser avant votre vérif' de copieurs...
Pour revenir un peu à cette vérif, les programmes
testés sont :
Les
programmes
Adresse
Valeurs
-----------------------------------------------------------------------
Locksmith
rapide
$0909
C5 EB
Disk Muncher
8.00
$0F35
A5 4D
Back It Up
III
$0C00
A2 32
Nibbles Away II
vA1
$0D07
A6 11
Je n'ai pas réussit à retrouver quels autres copieurs le
gogs avait testé!..
M'enfin.. laissons sa table, tout de meme.. bien que l'on puisse la
ralonger :
On pourrait, en incrémentant le nombre de copieurs testés
(Label "NBR_COPIEURS"
dans le source de ce cours) testé par exemple les copieurs
suivants en plus,
sans aucun probleme.. (pour trouver des adresses
caractéristiques de
ces copieurs j'ai tout simplement vidé la ram par 800:EA N
801<800.BFFFM puis
booté le copieur concerné et liste un peu à partir
de 900... pour retrouver
le début dudit copieur (dés que les NOP (EA) s'arretent),
et j'ai ensuite
cherché deux octets pas trops fréquents.. pour pas qu'il
confonde un pacman
quelconque avec crazy copy par exemple...)
A noter : il ne faut pas prendre d'adresse en $800-8FF car celles ci
sont
effacées par le boot1 de tout disk, lors du boot.. ni dans une
zone effacée
avant chargement et execution de cette vérif' anti-copieurs..
sinon, ca ne sert
à rien bien sur..
Autre chose, outre des copieurs, on peut penser à
vérifier des programmes tels
advanced demuffin 1.1 par exemple - ou meme des editeurs de secteurs -
, et
toute sorte d'utilitaires de déplombage.. Voici quelques
relevés qui peuvent
vous permettre d'allonger cette vérif aux softs suivants...
Les copieurs en plus...
Adresse
Valeurs
Table
------------------------------------------------------------------------
Copy II+
5.x
$0BC3 8D
16
0BC38D16
Crazy
Copy
$AA01 4C
07
AA014C07
Nibbles Away II
vC3
$850E 62
13
850E6213
Echo
+
$0F00 06
C9
0F0006C9
EDD IV (le
vrai!)
$0C01 18
0C
0C01180C
Disk Fixer
4.00
$09C0 45
E2
09C045E2
Pirate's
Friend
$0901 63
15
09016315
Locksmith 6.0
Lent
$174A 53
AD
174A53AD
Copy II+ 8.2
ProDOS
$7001 DB
D2
7001DBD2
=================== A vous de voir! vous avez tous les sources en
main.. A+, G.
Pour tout conseil, n'oubliez pas : 3615 code RTEL bal GODFATHER!.
===============================================================================
COMPLEMENT COURS 7.2 SUR LE BOOT TRACING !..METHODES INEDITES ANTI-BOOT
TRACING
===============================================================================
Par Godfather, The Gog's et... Broderbund !
Voici deux méthodes l'une venant du boot de choplifter,
l'ancetre de chez
broderbund, et l'autre du gog's... toutes reconstituées et
décortiquées par
votre serviteur en ce jour... - Ceci pour les 'credits'.
Boot tracer consiste - à un certain niveau du boot - a
décortiquer la mémoire
et à relancer une partie du boot d'un point donné sans
recommencer depuis le
début. Les deux méthodes anti-boot tracing se basent sur
le principe que le
bloader du programme qui boot est relancé à froid, c'est
à dire sans repartir
du début du boot par un - souvent long - boot tracer automatique
adapté au
boot que l'on suit..
Voici donc,...
1ERE METHODE ANTI-BOOT TRACING (c) Broderbund
---------------------------------------------
Choplifter Boot
Les headers sont dés le début du boot mis dans des
adresses au contenu volatile
Vous n'en avez jamais entendu parler ?.. c'est normal.. c'est moi qui
vient
d'inventer ce mot mi'technik. Mais alors, adresse volatile. ca veut
dire quoi ?
C'est simple... Quand vous passez en moniteur (en l'occurence pour
étudier une
partie du boot du soft que vous suivez), certains adresses sont
automatiquement
remises à 00 ou à une autre valeur, mais leur valeur
possible pendant le boot
est altérée par le simple fait de passer en moniteur.
$F0 en est une. Et le gars qui a fait le boot de choplifter le savait
bien!
Il a en effet poké au début de son boot en $F0,$F1,$F2
les headers - non
standards - necessaires à sa routine de lecture pour charger le
jeu,..
et cette routine ne fait pas un CMP #$D5 CMP #$AA CMP #$AD comme on
peut en
voir dans une rwts 3.3 normale par exemple, mais un CMP $F0 CMP $F1 CMP
$F2.
(remarquez bien la différence entre adresse et valeur!
marquée par $ ou #$)..
Ainsi, si on arrete le boot au milieu.. les headers sont perdus.. et la
routine
de lecture fera des CMP $F0 CMP $F1 CMP $F2 avant de mauvaises valeurs
dans ces
adresses...
Tout le boot sera impec, mais jamais il ne voudra redemarrer... sauf si
on
recommence tout DEPUIS LE DEBUT !!.. duuuur!
2EME METHODE ANTI-BOOT TRACING
------------------------------------
The ACS-Dijon
Le principe est très similaire.. et je vous l'explique.
Il consiste a écrire un texte en page text au début du
boot, et à le vérifier
ensuite lors du boot.. (comme toute vérif texte
décortiquée dans le cours 12
par exemple, anti-namekillers).. En effet, marquez le nom du soft en
ligne 1
par exemple, et allez vérifier en $400 s'il y a bien les valeurs
correspondant
à ces caractères ascii.
En effet, quand on interromp un boot.. quand on passe en moniteur...,
on passe en page texte.. et l'écran disparait!.. une
vérif de l'écran bien
installée peut donc alors etre très efficace!
On pourrait aussi penser à installer la rwts de lecture en page
texte,
pour les memes raisons.. etc.. ce sont des méthodes
déjà vu, et si vous
voulez bien, on en parlera dans un prochain cours.. car là, on
sort de
simples routines (petites, mais très très costaudes ma
foi!) ou de ruses
folles, pour passer à de la giga-programmation..
A un prochain cours sur le sujet, c'est promis car l'anti-boot tracing
est un domaine vraiment très interessant. De meme, un prochain
cours
portera sur un broderbund genre karateka ou captain goodnight, à
déplomber
vous memes.. m'enfin, en attendant..
================================================ Godfather , le 25
Octobre 1988
___ Les programmes de ce disk sont...
_________________
!
!
!
!
!
_______!_______
! BOOT COUNTER
1.00
!
!
!
-----------------
!
!
! Combien de fois avez vous booté tel disk ? !
By The Gog's !
! Ca vous interesse pas de le savoir
???
!
!
! Tiens une question.. Combien de fois avez vs
! from !
! booté le locksmith rapide ? (donc combien de
!
!
! copies pirates avez vous déjà fait pour vous !
The ACS-Dijon !
! ou pour des amis
??)
!
!
! Simple à savoir avec ce boot
counter..
! et !
!
!
!
! BOOT SERIAL
NUMBER
! Godfather !
!
------------------
!
!
! Combien de fois le disk qui vous tombe dans ! (c) Oct.
1988 !
! les mains via-pirate a-t-il été copié
avant
!
!
! vous ?? Combien de fois environ s'est copié
!_______________!
! vos productions personnelles (voir
dep8)..? !
! Rien de plus simple à evaluer, avec le serial number! !
!
!
! VERIF
COPIEURS
!
!
--------------
!
! Rubrique plombage et rubrique
magie!..
!
! Je vous laisse découvrir l'effet présenté
ici!.. !
! qui, s'il est bien utilisé en tant que plombage, peut !
! etre
redoutable!...
!
! Votre original boot avec le message "vous venez d'en !
! faire une copie, je détruis tout!".. mais comment l'a !
! t-il su
??..
!
!
Magie, vous dis-je! !
!
!
!
A+, G. !
!_______________________________________________________!
* Source verif locksmith
* plombage kill original
* by the gogs from the acs
ORG $1000
Essais
EQU $00
Start
LDA #$00
STA Essais
Other ASL
ASL
TAX
LDA H10E0,X ; Adresse
à vérifier..
STA
$27 ;
LDA H10E0+1,X ;
STA
$26 ;
LDY
#$00 ; octet
vérifié (00 to ..)
LDA ($26),Y ; prend 1er
octet..
CMP H10E0+2,X ; Valeur à
trouver ds cette adr.
BNE H1025 ;
non egal... essais?
INY
;
LDA ($26),Y ; Adresse
suivante à vérifier aussi
CMP H10E0+3,X ; valeur à
trouver ds cette adr.
BNE H1025 ;
JMP PrtCOPIE
H1025
INC Essais
LDA Essais
CMP #$07
BNE Other
RTS
*** Affiche mess "VS EN AVEZ FAIT UNE COPIE!"
PrtCOPIE
JSR HOME
JSR HBA90
LDY
#$00 ; Affiche message "vs
avez fait.."
Lp0
LDA CopieT0,Y ; "une copie!"
BEQ Text1 ;
STA H052A,Y ;
INY
;
BNE
Lp0 ;
Text1
LDY
#$00 ; Affiche mess2 "copie!"
Lp1
LDA CopieT1,Y ;
BEQ Text2 ;
STA H06AA,Y ;
INY
;
BNE
Lp1 ;
Text2
LDY
#$00 ; Affiche mess "why?"
Lp2
LDA CopieT2,Y ;
BEQ KillRAM ;
STA H07AA,Y ;
INY
;
BNE
Lp2 ;
*** Routine qui détruit une partie de la RAM
KillRAM
LDY #$00
KillLp
STA HB600,Y
STA HBA00,Y
INY
BNE KillLp
LDY #$00
LowAdr
STA Start,Y
INY
CPY #<LowAdr
BNE LowAdr ;
Plantage... (la carry doit etre à 0
LpInfinie
BEQ LpInfinie ; ou à 1.. pas
d'autre poss.)
CopieT0
ASC "ARGHHHH !!"
HEX 00
CopieT1
ASC "VOUS VENEZ D'EN FAIRE UNE COPIE."
HEX 00
CopieT2
ASC "POURQUOI ???"
HEX 00
H10E0
HEX 0909C5EB
HEX 0D12C221
HEX 0900D4D2
HEX 0900ACBB
HEX 0C00A232
HEX 0D07A611
HEX 00D01F60
HEX 0000B7FF
H052A
EQU $052A
H06AA
EQU $06AA
H07AA
EQU $07AA
HB600
EQU $B600
HBA00
EQU $BA00
HBA90
EQU $BA90
HOME
EQU $FC58