Cours de déplombage 07.2



Ecran
Ecran
Ecran
Ecran


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.
----------------------------------------------------------------------


Floppy
DOS 3.3
Download Cours GDF 07.2 rev 1.00 (gzipped)


Sommaire


Lien Article
Voir Introduction.
Voir Cours 7.2 révision 1.00.
Voir Cours 7.2 ... 2nd fichier.
Voir Les programmes de ce disk.
Voir Vérif Locksmith par The Gog's (ACS/THT).

hr cours GDF

Introduction.


===============================================================================
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!


Retour sommaire

hr cours GDF

Cours 7.2 révision 1.00.


===============================================================================
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!.


Retour sommaire

hr cours GDF

Cours 7.2 ... 2nd fichier.


===============================================================================
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


Retour sommaire

hr cours GDF

Les programmes de ce disk.


 ___ 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. !
!_______________________________________________________!


Retour sommaire

hr cours GDF

Vérif Locksmith par The Gog's (ACS/THT).


* 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


Retour sommaire