Cours de déplombage 20
Cours fourni par Kristo et LoGo.
Merci à eux.
File: Gdf20.dsk
Disk: DOS 3.3 Volume 254 (140KB)
Name
Type Auxtyp Modified
Format Length
------------------------------------------------------------------------------
*HELLO
BAS $0801 [No
Date]
DOS 2444
DEP FORCE
7
TXT $0000 [No
Date]
DOS 5446
T.APPENDIX
UTILITAIRES
TXT $0000 [No
Date]
DOS 11151
T.COURS 20
DATA
TXT $0000 [No
Date]
DOS 895
T.COURS 20 REVISION
1.00 TXT
$0000 [No Date]
DOS 41347
T.INFORMATIONS
TXT $0000 [No
Date]
DOS 3588
T.INTRODUCTION
TXT $0000 [No
Date]
DOS 2129
T.LES PROGRAMMES DE CE DISK
TXT $0000 [No
Date]
DOS 1984
------------------------------------------------------------------------------

|
DOS 3.3
|
Download Cours GDF 20 rev 1.00 (gzipped)
|
Sommaire
Lien |
Article |
 |
Introduction. |
 |
Informations. |
 |
Cours 20 Révision 1.00. |
 |
Cours 20 data. |
 |
Les programmes de ce disk. |
 |
Appendix utilitaires. |
 |
Déplombage Force 7. |
Introduction.
===============================================================================
COURS 20 : PROTECTION DATASOFT 1988 ,
INTRODUCTION
Godfather
===============================================================================
Salut et salut,
Trois rub' dans cette intro...
Remerciements.
--------------
Permettez moi de remercier avant tout, les personnes qui ont permi
d'avoir ce cours dans vos drives aujourd'hui, mis à par moi, bien sur.
* Loockheed , Copperfield , et tous les membres du Black Chest.. pour les deux
derniers originaux Datasoft, tous deux plombés identiquement, ce qui m'a
donné l'idée et le matériel pour faire ce présent cours. Meme si l'idée
d'origine est de moi (black chest), je ne pensais pas au départ que loockheed
s'organiserait autant, et que l'on obtiendrait de tels résultats.
* Datasoft ensuite, puisqu'ils se mettent apparamment à réutiliser plusieurs
fois leurs plombages, comme le font epyx par exemple, et broderbund ou encore
eoa.
Le présent cours.
-----------------
Comme je vous le disait à l'instant, Datasoft a utilisé la meme protection sur
leurs deux derniers logiciels à savoir :
- Alternate Reality , the
Dungeon ( role , aventure )
- Force
7
( action )
En voici tous les détails, sources et explications.. et force 7 en face B.
Alternate reality , j'ai aussi l'original.. Dispo sur simple demande.
Alors, en espérant que cette protection continue, je vous souhaite déjà bonne
chance pour ce crack tout chaud !..
Fautes d'orthographe.
---------------------
Je suis certain qu'il est très désagréable pour vous de trouver des fautes
d'orthographe dans mes cours.. et il y en a.
Merci, quand vous en croisez une, de me la signaler (texte "il montait
'excalier" au lieu de "l'escalier" , ca me suffit pour retrouver la faute
et la corriger pour une meilleure version prochaine dudit cours.) par courrier
avec votre commande suivante.
Amicalement, Godfather
===============================================================================
Retour sommaire
Informations.
INFORMATIONS CONCERNANT LES COURS
-------------------------------------------------
Fichier mis à jour ce 12 Mai 88!
===============================================================================
CINQ NOUVEAUX COURS : COURS 11.2, COURS 14.2, COURS 17.2, COURS 18.2, COURS 19.
-------------------------------------------------------------------------------
11.2 : TOUT sur les nouvelles techniques de mise en catalog. Un cours rempli de
programmes inédits automatisant au maximum le boulot !.. tant que vous
n'aurez pas lu et vu ce que contient ce cours, vous ne pourrez pas
dire maitriser l'art complexe de la mise en catalog, qui que vous soyez!
Avec le cours 11, ca forme la bible de la mise en catalog !
14.2 : TOUT sur la nouvelle protection d'Activision, employée depuis
Garry Kitchen Game Maker sur une bonne demi-douzaine d'originaux de
super jeux en tout genre ! et de plus, un plombage des plus interessant.
17.2 : TOUT sur la nouvelle protection d'Origin systems, employée sur Ultima5,
qui est l'original de ce nouveau cours, et que l'on a beaucoup de
chances de revoir bientot sur leur nouveaux softs, dont Space Rogue et
Homecourt ( Basketball ). Leur protection est très originale...
mais je n'en dis pas plus!
18.2 : TOUT sur les fixs de la seconde génération , à savoir les fixs sur
des jeux de role ou d'aventure ( nouvelles techniques de recherche ) ,
les fixs intégrés aux softs , ou "soudés" , etc.. avec tous les
sources des routines necessaires , en catalog !
19 : TOUT sur les 18 secteurs de BR0DERBUND, et sur leur DOS 18s.
Comment faire un copieur paramétré spécialement pour leurs nouveaux
softs ? Comment controler la routine read/write/format 18 secteurs ?
Comment se faire l'enregistrement magnetique avec les drives Apple ?
Autant de questions qui trouveront un réponse dans ce nouveau cours !
===============================================================================
DEUX NOUVEAUX GODFATHER'S PRODUCTS (11,12) : ACCO'BOOT 1.00 + SHORT R/W/F
-------------------------------------------------------------------------------
GP11 : Pour s'incruster sur un boot (signature, fix integré, etc..), rien de
plus géant que ce boot inédit style Tom E.Hawk boot!.. le programme
est accompagné d'un fichier explicatif très complet, sur le mode
d'emploi technique, et toutes les applications que l'on peut en faire..
De plus, ici, un concours vous sera proposé. 1er prix : 2 cours gratuits
GP12 : La plus courte des routines disk, et à la fois la plus paramétrable..
C'est la short read/write/format routine !..
LES NOUVEAUX COURS EN PROJET :
===============================================================================
COURS 20 REVISION 1.00 : PROTECTION ELECTRONIC ARTS 1980-1987 (MCODE)
COURS 20.2 REVISION 1.00 : PROTECTION ELECTRONIC ARTS 1988
(Originaux disponibles : Legacy of the Ancients, Chuck Yeager's Advanced
Flight Trainer, Wasteland, Death Lord...)
Et en plus : COURS 01 REVISION 4.10 (Update 25/02/88)
COURS 02 REVISION 1.2D (Update 02/02/88)
COURS 03 REVISION 2.51 (Update 06/03/88)
COURS 10.2 REVISION 1.20 (Update 01/05/88)
COURS 12 REVISION 1.90 (Update 12/05/88) Déjà
disponibles !
-------------------------------------------------------------------------------
Et je le rappelle : toutes les révisions de cours sont gratuites !!
Retour sommaire
Cours 20 Révision 1.00.
===============================================================================
COURS 20 : PROTECTION DATASOFT
1988
Godfather
===============================================================================
Révision
1.00
Update : 04/07/88
Salut et salut,
En premier lieu comme toujours, le menu du cours magistral qui va suivre :
La
protection
( Protection Update 03/07/88 )
-------------
1. Les originaux Datasoft concernés
2. Protection de quel type ?
3. Allons y au nibble editor.. que trouve-t-on ?
4. Protection incopiable ?
Evolution de la protection Datasoft
-----------------------------------
1.
Tomahawk
, Update 10/04/88 , Protection v2.00
2. Alternate Reality II , Update 19/04/88 , Protection v1.00 (rappelez-vous
3. Force
7
, Update 30/07/88 , Protection v1.00 ces numéros
4. Video Title Shop , Update 03/07/88 , Protection v2.00 de version..)
Retrouver la vérif
------------------
1. Méthode /Boot tracing
2. Méthode /Scan octets.
Annuler la vérif
----------------
1. Source /Bloader + Vérif
2. Comprendre le fonctionnement de la vérif et l'annuler
2. Source /Move Ram_Aux
Je vous préviens tout de suite : ce cours se veut très complet. Tout est
expliqué, commenté, détaillé et argumenté. Je ne parle pas de faire quelque
chose sans détailler completement comment. alors, meme si ca peut vous paraitre
compliqué, croyez moi, c'est en réalité très simple !
Il suffit de lire, et d'essayer d'appliquer. Ok?
Alors bonne chance..!
L'original auquel ce cours s'applique tout particulièrement est le dernier jeu
d'action de chez Datasoft, c'est à dire Force 7. ( 1 face , 128K ).
Pour les autres plombages sur les autres softs, certains paramètres peuvent
varier, mais je les cite dans un des chapitres de ce cours.. no problem..
mais commencez d'abord par Force 7... would you ?
Amicalement, Godfather
===============================================================================
LA PROTECTION DATASOFT 1988 , C'EST QUOI ??
===============================================================================
1. Les originaux concerné par cette protection
----------------------------------------------
A ma connaissance, sont protégé à la base de ce plombage fou, les originaux
Datasoft suivants :
-
Tomahawk
( Avril 1988 )
- Alternate Reality II , The
Dungeon (
Avril 1988 )
- Force
7
( Juillet 1988 )
- Video Title
Shop
( Juillet 1988 )
Et, on l'espère, de nombreux futurs produits Datasoft.
2. Protection de quel type ?
----------------------------
La première chose à faire, je vous le dit toujours et encore, est de tenter une
copie locksmith de votre original. Surtout, ne l'auto-copiez pas.. c'est à dire
ne le copiez pas sur lui meme car, étant plombé, l'original deviendrait copie
donc planterait..c'est clair.
En en faisant une copie sur un disk vierge, vous devez remarquer ceci :
- Le disk original est lisible jusqu'à la piste $1C
(les pistes $1D à $22 sont illisibles comme non-formattées)
- La copie ne boote pas completement.
(on en reparlera plus loin)
3. Analyse au Nibble Editor
---------------------------
Bootez le disk Copy Enfoires par exemple ( pour Nibbles Away II vC3 ) ou
encore le Locksmith 6.0 ( en une face , pour le Nibbles Editor )...
et tapez Ctrl-R pour Read Nibbles. Entrez ensuite la valeur de la piste à
étudier c'est à dire ici $1D ( la première à étudier , les précédentes sont en
format normal 3.3 _ cf cours 6 ).
A l'édition de la piste $1D, $1E, $1F, $20, $21 ou $22, on ne voit rien de
bien spécial si ce n'est un désordre de nibbles écrits un peu n'importe
comment.. à vrai dire, la meme chose que l'on peut voir si on veut lire un
disk en ayant laissé le drive ouvert !.. peut-on conclure que ces pistes
ne sont tout simplement pas formattées.. oui, en toute logique.
Les pistes $1D et + ne contiennent donc aucune sorte de donnée du soft.
Il y a certains originaux datasoft, d'ailleurs (je pense à video title shop)
qui ont bien $22 pistes lisibles. Ceci s'explique après reflexion uniquement
que pour une question de vitesse dans les copies, l'éditeur a adapté son
copieur comme on peut adapter un locksmith (et qui dit que ce n'est pas un
locksmith adapté, cf cours 6), pour qu'il ne formatte et copie que le nombre
de pistes désiré, c'est à dire le nombre de pistes contenant des données
du soft.. et rien de +.. pour gagner du temps, donc.
La protection incopiable ne se base donc pas sur les pistes non formatées
comme on pourrait le penser.. alors allons voir sur une autre, la piste $1C
par exemple. ( T puis $1C , puis Ctrl-R ). Et là, on trouve un truc suspect
Voici le sector edit de la piste $1C au nibbles away II vC3 :
PTR=xxxx ADR=xxxx T=1C
-----------------------------------
B2F2B3FF FFFFFFFF FFFFFFFF FFFFFFFF ; $FF de sync. secteur 00 piste $1C
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ;
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ;
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ;
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ;
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ;
FFFFFFFF FFFFFFCF F3FCFFFF CCAA9684 ; CC AA 96 ! intrus !
C3BCCDA7 E7F9FEFF FFD5AA96 FFFEAAAA ; D5 AA 96 puis adr.field 1C 00
AAAAFFFE DEAAEBFC FFFFFFFF FCFFFFFF ; DE AA EB puis sync. puis data field.
Vous connaissez tout dans ce qui vient de s'afficher ( voir l'indispensable
cours 6 sur les nibbles / formattage disk ) et reste "l'intrus" dans cette
belle chaine de valeurs : CC AA 96.
Donc, il y a de fortes chances que le plombage de ce disk se base sur cette
série d'octets CC AA 96 avant le champ adresses des secteurs lisibles du disk,
puisqu'on retrouve cette suite à peu près partout sur le disk original.
Affaire à suivre.. et nous allons la suivre.. venez avec moi..
4. Cette protection est-elle incopiable ?
-----------------------------------------
Aucun programme de copie disponible à ma connaissance n'a été en mesure de me
fournir une copie potable de ces originaux.. faire un copieur adapté comme le
epyx copy ? je le ferais volontiers dés que j'aurais le temps... (à voir venir)
===============================================================================
Quand vous faites une copie d'un de ces originaux, et que vous la bootez..
le boot commence et s'arrete vite avec le message suivant à l'écran :
______________________________
!
!
! PLEASE USE ORIGINAL DISK !
!______________________________!
La chaine de nibbles CC AA 96 doit etre vérifié au boot, pendant la lecture
et le chargement ( bloader ) du programme.. un vérif au boot = ?
Boot tracing encore et toujours, bien sur !
Mais n'y a-t-il pas d'autres moyens ???.. Nous allons y penser :
===============================================================================
L'EVOLUTION DE LA PROTECTION DATASOFT
===============================================================================
Cette protection retrouvée jusqu'à présent sur 3 originaux DS a bien plus
changée que la protection Epyx retrouvée sur une bonne 15zaine d'originaux Epyx
Voici les numéros de version que j'ai donné à ces protections et modifications:
*
Tomahawk
Plombage v2.00
* Alternate Reality
II
Plombage v1.00
* Force
7
Plombage v1.00
* Video Title
Shop
Plombage v2.00
Plusieurs paramètres ont changé ou pourraient changer :
1. Numéro de la piste vérifiée ( une seule est vérifiée )
2. Boot ( codages supplémentaires , adresses différentes.. )
3. Adresses et/ou résultats de vérification différents (-tes), du bloader
4. Codages supplémentaires au niveau de la vérification.
Nous allons voir dans la suite du cours tout ce qui a déjà changé dans ces
différentes versions de ce plombage.. tout est commenté et décortiqué comme
toujours pour que vous vous y retrouviez partout. suivez moi encore messieurs,
dames!
Protection v1.00 : Boot simple 3.3 , Bloader + Vérif non codée.
Protection v2.00 : Boot 3.3 codé , Bloader + Vérif non retrouvé sur disk
===============================================================================
RETROUVER LA VERIFICATION DU DISK ORIGINAL SUR VOTRE COPIE
===============================================================================
Nous allons comme convenu parler ici de la recherche de la vérif par 2 biais :
- Boot
tracing ( Pv1.00
, v2.00 )
- Recherche d'octets ( Pv1.00 )
Je m'y lance..
-------------------------------------------------------------------------------
Méthode 1 : BOOT
TRACING
Protection v1.00 , Boot 3.3 normal
-------------------------------------------------------------------------------
Original : Force 7.
On commence comme toujours les boot tracing de la manière suivant :
*1600<C600.C700M
*16F8:4C 59 FF
*1600G
On examine le boot1 pour voir que c'est un bete boot1 de boot 3.3.
On trouve en $84A un JMP ($08FD) c'est à dire un JMP $B700. On va le modifier
par un JMP $1710 (après le boot tracer), adresse à laquelle on mettra un JMP
au moniteur. Il vous suffit de rentrer le code suivant :
*16F8:A9 4C 8D 4A 08 A9 10 8D 4B 08 A9 17 8D 4C 08 4C 01 08
*1710:4C 59 FF
*1600G
On examine ensuite le boot2 ($B700). C'est la suite de notre bete et classique
boot3.3. On trouve en $B741 un JMP $1E00 c'est à dire un JMP au boot suivant.
On va arreter le boot ici, pour examiner à son tour la routine en $1E00,
en faisant ceci :
*1710:A9 4C 8D 41 B7 A9 59 8D 42 B7 A9 FF 8D 43 B7 4C 00 B7
*1600G
Vous arrivez ainsi au boot2.. en $1E00..
Avant de passer à l'étude décortiquée de ce que l'on y trouve ( rien d'autre
que le bloader et la vérification du disk original, à dire vrai ! ), laissez
moi vous expliquer les autres méthodes de recherche de cette vérification et
décortiquer les différents cas qui surviennent du fait des modifications
apportées à cette protection au fil des originaux Datasoft..
-------------------------------------------------------------------------------
Méthode 1 : BOOT
TRACING
Protection v2.00 , Boot codé !
-------------------------------------------------------------------------------
Original : Video Title Shop.
Notez qu'il faut bien sur taper ceci une fois la COPIE à boot-tracer, dans
le drive 1 !..
*1600<C600.C700M
*16F8:4C 59 FF
*1600G
En $801 on trouve ceci (ce qui vient de se charger au boot) :
*0801 : 4C 7E 08 JMP $087E
On regarde en $087E. On trouve ceci :
*087E : A2
79 LDX
#$79 ; Octet x = #$79
*0880 : BD 04 08 LDA $0804,X ; Adresse $0804 + x soit $087D
*0883 :
48
PHA
; Décodage
*0884 :
4A
LSR
; -
*0885 :
68
PLA
; -
*0886 :
6A
ROR
; -
*0887 : 9D 04 08 STA $0804,X ; Sauve résultat ds mm adr.
*088A :
CA
DEX
; x = x - 1 (on remonte.. to $0804)
*088B : D0
F3 BNE
$0880 ; qd. x = 0 (adr $0804) on
arrete.
*088D : 4C 14 08 JMP
$0814 ; saut à la routine décodée.
Ce programme, on le voit, décode la zone allant de $0804 à $0804+$79 soit $087D
c'est à dire tout ce qui suit le JMP $087E (adresse $0801) au début de ce
décodeur (adresse $087E). A la fin du décodage, le prog. saute en $0814.
Pour pouvoir aller plus loin, il faut décoder ce boot $0804-087D..
Nous allons utiliser cette meme routine de décodage en modifiant juste le JMP
final pour reprendre la main à ce moment là ( au moment où le JMP $0814 doit
s'executer, tout ce qui précède est décodé )...et lancer le décodeur.
Tapez donc ceci :
*088D : 4C 59 FF JMP $FF59 ; Saut au moniteur
Pour modifier le JMP final ( reprendre la main après le décodage ), et ceci :
*087EG
Pour éxécuter le décodeur.
Vous entendez BIP, vous etes revenu sous moniteur comme à l'instant..
seule différence, le boot1 est décodé.. et vous pouvez le lister!
Allons y..
En $0804, après le JMP $087E ,nous trouvons ceci :
*0800- 01 4C 7E 08 04 45 06 5C
*0808- 00 2B 08 3D 00 00 0D 0B
*0810- 09 07 05 03
Le programme sautait en $0814, allons voir ce qui s'y passe :
*0814 : A9
0C LDA
#$0C ; acc = 0C
*0816 : 4D 01 08 EOR $0801 ; eor 0C * 4C = 8C
*0819 : 8D 01 08 STA $0801 ; 801 = 8C
*081C : A6
2B LDX
$2B ; slot*16 = 60
*081E :
8A
TXA
;
*081F : 85
DF STA
$DF ;
*0821 :
0A
ASL
;
*0822 :
0A
ASL
;
*0823 :
2A
ROL
;
*0824 :
2A
ROL
;
*0825 :
2A
ROL
;
*0826 : 49
C0 EOR
#$C0 ; C0 06 = C6
*0828 : 8D 08 08 STA $0808 ; $0808 = C6
Ce qui nous donne ( je le donne au passage ) ceci, en $0800 :
*0800 : 01 8C 7E 08 04 45 06 5C
*0808 : C6 2B 08 3D 00 00 0D 0B
*0810 : 09 07 05 03
Je continue le listing du boot décodé.. on trouve en $082B une routine move
de la zone $0805-$0808 en $0027 et de la zone $0809-$080C en $003E, que voici :
*082B : A0 03 LDY #$03 ;
*082D : B9 05 08 LDA $0805,Y ; $0805 + 03 = $0808
*0830 : 99 27 00 STA $0027,Y ; $0027 + 03 = $002A
*0833 : B9 09 08 LDA $0809,Y ; $0809 + 03 = $080C
*0836 : 99 3E 00 STA $003E,Y ; $003E + 03 = $0041
*0839 :
88
DEY
;
*083A : 10 F1 BPL $082D ;
On a donc en page zero maintenant (permettez moi encore un apparté) :
*0027 : 45 06 5C C6
*003E : 2B 08 3D 00
*083C : A4
28 LDY
$28 ; $0028 = 06 = $0806
*083E : B9 0D 08 LDA $080D,Y ; $080D + 06 = $0813
*0841 : A0 00 LDY #$00 ;
*0843 : 91
40 STA
($40),Y ; $0040 = 3D , $0041 = 00 soit $003D
On a donc maintenant en page zero :
*003D : 03 ( car $0813 : 03 )
Je continue :
*0845 : AD 05 08 LDA $0805 ;
*0848 : 85
27 STA
$27 ; $0027 = 45 = $0805
Ceci ne modifie rien.. car $0027 était déjà égal à $45.
*084A : CE 05 08 DEC
$0805 ; Dec $0805 ( départ $0805 =
45 )
*084D : CE 06 08 DEC
$0806 ; Dec $0806 ( départ $0806 =
06 )
*0850 : 30
0F BMI
$0861 ; Si $0806 = FF then
exit.
$0806 est le compteur du nombre de secteurs à charger.
Ce compteur est initialisé à 06 et se termine quand il est négatif, c'est
à dire après avoir chargé le secteur équivalent au compteur = 00.
$0805 est l'adresse haute du buffer où charger le secteur.
Ce compteur va de l'adr. $4600 à $4000. Le boot2 ira donc de $4000 à $46FF.
($3F+1=$40).
En $0852 suit la routine de chargement d'un secteur du disk en ram (boot2).
En $0861 suit la routine qui va saute au boot2 précédemment chargé (bmi $0861).
Rappelez vous des valeurs que l'on trouve en page zero (voir plus haut) :
JMP $0029 correspond à un JMP $C65C car $0029 = 5C , $002A = C6
JMP $003E correspond à un JMP $082B car $003E = 2B , $003F = 08
L'adresse $C65C correspond à la routine read_sector de la rom (boot0).
L'adresse $082B correspond à l'adresse de bouclage du bloader (next_sector).
*0852 : A9
08 LDA
#$08 ; Adresse haute fin
load_secteur rom
*0854 :
48
PHA
; =08
*0855 : A9
5E LDA
#$5E ; Adresse basse fin
load_secteur rom
*0857 :
48
PHA
; =5E
*0858 : A9 00 LDA #$00 ; /
*085A :
48
PHA
; = $085E.
*085B : 6C 29 00 JMP ($0029) ; Load sector via rom boot0.
On vient de le voir (ds les commentaires listing à l'instant) , après le
chargement du secteur par la rom ( JMP ($0029) = JMP $C65C ) , le prog.
continue en $085E. ( stack'ed ). soit ici :
*085E : 6C 3E 00 JMP ($003E) ; Suite load , saut en $082B
Ce qui équivaut à un JMP $082B (Load Next Sector). Le compteur de secteur et
l'adresse buffer ayant été modifiés entre temps (entre deux lectures).
*0861 : A9
40 LDA
#$40 ; Adr. $4000
*0863 : 85
03 STA
$03 ;
*0865 : A0 00 LDY #$00 ;
*0867 : 84
02 STY
$02 ; LDA ($02),Y = LDA
$4000,Y
*0869 : A2
06 LDX
#$06 ; Y=00 , X=06
*086B : B1 02 LDA ($02),Y ; LDA $4000,Y
*086D :
48
PHA
; Décodage
*086E :
4A
LSR
; -
*086F :
68
PLA
; -
*0870 :
6A
ROR
; -
*0871 : 91 02 STA ($02),Y ; STA $4000,Y
*0873 :
C8
INY
;
*0874 : D0 F5 BNE $086B ; Loop
*0876 : E6
03 INC
$03 ; Page suivante.
($4100...)
*0878 :
CA
DEX
; 6 pages ($FF octets) à décoder.
*0879 : D0 F0 BNE $086B ; Loop
Après chargement donc, et décodage du boot2, le saut boot2 se fait enfin :
*087B : 4C CB 43 JMP
$43CB ; Saut boot2 chargé et décodé.
VOILA !! Nous avons enfin localisé le JMP boot2..
Revenons au boot tracer.. c'est bien ce qui nous interesse je crois..non?
D'abord un point : il n'est pas possible de lancer le programme tel quel
pour charger, après avoir tout décodé à la main, le boot2.. Celui ci ne
se chargerait pas, car la rom fait pleins d'initialisations folles avant
de pouvoir charger un secteur, et le fait que l'on ait trifouillé, entre
autre pour décoder ce programme, dans le moniteur, aura annulé toutes ces
initialisations indispensables à la bonne continuation du boot.
Pour boot tracer, il y a trois solutions applicables et trademark gdf :
1. Boot tracer en profitant du fait que l'on travaille sur une copie.
---------------------------------------------------------------------
Puisque l'on travaille sur une copie, on pourrait penser à
décoder le boot.. et à le resauver, décodé, sur une autre copie.
On pourrait donc, dés $16F8, avoir le JMP Boot2 en clair, et
le modifier le plus simplement du monde...
Pour cela, il suffit de décoder ce boot comme on vient de le faire
puis de le mover en $9000 (*9000<0800.08FFM) puis de booter notre
copy enfoires disk par un *C600G (et non pas par un Pomme-C-Reset),
et de taper "4" pour le disk fixer 4.00 dés le boot. Une fois
celui-ci chargé, tapez "Q" pour sortir en moniteur. Tapez alors
le move de notre secteur dans la zone buffer 0 de ce disk fixer 4.00
(*8000<9000.90FFM). Ensuite, relancez le disk fixer (*0800G) et
vous vous retrouvez en plein écran edit sector, avec votre
secteur de boot Datasoft déjà décodé à l'écran. Il ne vous reste
plus qu'à introduire une copie de votre original, et à sauver
ce secteur en secteur 00. Le secteur décodé est écrit.
Dernière chose à ne pas oublier : ce boot commence par un JMP au
décodeur...mais tout est déjà décodé. Ce décodeur se terminant
par un JMP $0814 et n'étant plus utile, nous allons donc remplacer
directement le JMP Décodeur par un JMP $0814. C'est une déconnection
de routine (jargon messieurs, jargon). Le JMP Décodeur, vous vous
en rappelez est en $0801. Il vous suffira donc de modifier l'octet
$01 du secteur 00 que vous venez d'écrire, de 4C 7E 08 en 4C 14 08.
Le JMP Boot2 étant en clair en $087B (octet $7B) il suffit de faire
le boot tracer suivant :
*16F8 : A9 4C 8D 7B 08 A9 59 8D 7C 08 A9 FF 8D 7D 08 4C 01 08
Et de taper *1600G. Le boot2 sera chargé, pret au listing!
Mais vous pouvez aussi bien modifier directement l'octet $7B de
votre copie, puisque ce n'est qu'une copie, en $7B: 4C 59 FF..
et la booter ! Plus besoin de boot tracer!
Compliqué ? Peut etre au niveau des explications.. mais en pratique,
c'est très simple en vérité!
2. Boot tracer en sauvant le boot décodé
----------------------------------------
On repart du point où le boot a déjà été décodé, le jmp décodeur
remplacé par un jmp $0814 et le jmp boot2 remplacé par un JMP $FF59. ($7B)
On move cette zone en $9800. et on tape le boot tracer suivant :
*16F8:4C 00 99
En $9800, on a le boot1 tel qu'il doit s'executer pour charger le boot2
et vous rendre la main en moniteur au bon moment. La technique que je
vais utiliser ici est la suivante : je vais remplacer le boot1 chargé
par le boot1 modifié, après - donc - le chargement du boot1, et avant
son execution bien sur. Ainsi, les initialisations ram seront faites
du fait du boot, et le boot s'executera de telle manière qu'il rende la
main. c'est bien ca aussi du boot tracing, messieurs.
*9900:A0
00 LDY
#$00 ; On move en $800 la
page $9800
*9902:B9 00 98 LDA $9800,Y ;
*9905:99 00 08 STA $0800,Y ;
*9908:EE 03 99 INC $9903 ;
*990B:EE 06 99 INC $9906 ;
*990E:AD 06 99 LDA $9906 ;
*9911:D0 EF BNE $9902 ;
*9913:4C 01 08 JMP
$0801 ; et on saut en $801.
3. Boot tracer et modifier le jmp boot2 en jmp moniteur, en codé!
-----------------------------------------------------------------
Le principe est simple. On veut boot-tracer de manière à ce que le boot1
se charge (codé), modifier avant de l'executer le JMP final (jmp boot2)
qui est lui aussi codé, et sauter en $0801. Seul probleme : le jmp à
modifier est codé, et le jmp que l'on devra y mettre en remplacement devra
aussi etre codé de manière a etre décodé et donné un jmp moniteur $FF59.
Il faut donc avoir une routine qui nous CODE un JMP $FF59 en trois octets
qui seront décodé par le décodeur du boot en un JMP $FF59... et mettre ces
trois octets à la place des 3 octets qui sont décodé en JMP Boot2.
Je vous redonne le listing du décodeur du boot :
*087E : A2
79 LDX
#$79 ; Octet x = #$79
*0880 : BD 04 08 LDA $0804,X ; Adresse $0804 + x soit $087D
*0883 :
48
PHA
; Décodage
*0884 :
4A
LSR
; -
*0885 :
68
PLA
; -
*0886 :
6A
ROR
; -
*0887 : 9D 04 08 STA $0804,X ; Sauve résultat ds mm adr.
*088A :
CA
DEX
; x = x - 1 (on remonte.. to $0804)
*088B : D0
F3 BNE
$0880 ; qd. x = 0 (adr $0804) on
arrete.
*088D : 4C 14 08 JMP
$0814 ; saut à la routine décodée.
Et voici le listing d'un codeur qui marche de pair avec ce décodeur :
*9000 : A2
06 LDX
#$06 ; si l'on appelle 7 fois
le décodeur
*9002 : 20 7E 08 JSR $087E ; Jsr décodeur
*9005 :
CA
DEX
;
*9006 : E0 00 CPX #$00 ;
*9008 : 10
F8 BPL
$9002 ; alors ca a l'effet inverse.
*900A :
60
RTS
; (codeur).
Notez qu'avec ces deux armes, vous pourrez coder vos signatures par exemple
(voir cours 12) ou des images signatures (voir cours 5 et 9). Why not..
ou tout simplement du code à cacher (plombage?).
Le source d'un codeur/décodeur vous est d'ailleurs donné en catalog.
(fichier DS.CODE DECODE sous merlin pro). Vous voyez comme je suis prévenant ?!
Le boot a déjà été décodé et modifié (JMP $FF59 en $087B).
Il vous suffit de le recoder par un 9000G, en ayant mis en $088D ( à la fin de
la routine décodage ) un RTS, car je fais un JSR à cette routine.
Votre boot est maintenant modifié, et recodé.
Regardez ce qu'il y a en $087B. Notez les 3 octets qui suivent.
4C 59 FF , soit JMP $FF59 , donnera les 3 octets suivants :
Il vous reste maintenant à faire un boot tracer modifiant le jmp boot2 codé!
*1600<C600.C700M
*16F8:A9 .. 8D 7B 08 A9 .. 8D 7C 08 A9 .. 8D 7D 08 4C 01 08
*1600G
Vous vous retrouvez face au boot2! et l'adresse de lancement du boot2 était
l'adresse qui était en $087B (JMP Boot2) après décodage et avant modification.
-------------------------------------------------------------------------------
Méthode 2 : Recherche
d'Octets
Protection v1.00, rien n'est codé!
-------------------------------------------------------------------------------
Original : Force 7
Je viens sans doute de completement vous embrouiller avec tous ces listings
dans tous les sens.. pardonnez moi, ca a été plus fort que moi (rires macabres)
Je vais maintenant vous montrer qu'en fait, en ce qui concerné le non-codé
(protection v1.00) il y a beaucoup plus simple que le boot tracing pour
retrouver la vérification.. en mémoire ou sur le disk..
Vous le savez, le plantage entraine l'affichage en texte de
"PLEASE USE ORIGINAL DISK". Et bien messieurs ,tenez vous bien.. il suffit
de rechercher ce texte (en ascii normal) avec un sector editor sur les disks
plombés v1 (force 7 par exemple), et vous le trouverez. ainsi que la vérif.
en quelques secondes !..
Vous pouvez aussi booter une copie.. attendre le message.. passer en moniteur
et recherchez ces octets sous force Ascii. (plutot que de tout faire à la main,
chargez un petit scanner d'octets en ram du cours 8, ds une zone qui ne
s'efface pas au chargement de cette vérif...vers $9000 par exemple pour
force 7. Vous pouvez prendre SCAN POMS par exemple qui est en $9000 si ma
mémoire est bonne...).
Pour les softs plombés en v2, meme scan disk eor du cours 8 n'arrive à
retrouver le texte étant donné que ce n'est pas un codage par EOR.
Dommage.. donc, ici, rien à faire sinon comprendre le décodeur!
comme on l'a fait ci-dessus.
===============================================================================
ANNULER LA VERIFICATION (FIN DU DEPLOMBAGE)
===============================================================================
Vous avez retrouvé la vérification du disk original en mémoire ou sur le disk..
aucun probleme jusqu'ici qui n'ait pas été clarifié plus haut, n'est ce pas ?
Si vous ne l'avez qu'en mémoire, il faut la rechercher sur le disk.
Si elle se charge en ram codée, notez les premiers octets de la vérif CODéE
et recherchez les au copy II+ 5.x option sector editor / scan for bytes.
Vous savez donc maintenant où elle commence en ram et sur le disk.
Voici pour mieux décortiquer la suite, la vérif' prise sur Force 7 qui est
sensiblement invariable au fil des originaux. ( source en catalog ).
*---------------------------------------
* Vérification disk Datasoft 1988
*
* Source détaillé par Godfather
*
* Cours de déplombage 20 , Datasoft 88
*
* Update version 1.00 : 29/6 au 3/7/88 .
*---------------------------------------
ORG $1E00
Slot = $B7E9 ; Slot (boot 3.3) = #$60
Reset = $03F2
Piste = $B7EC
Secteur = $B7ED
Buffer = $B7F0 ; Buf.lo . $B7F1 = Buf.hi
NbSect = $B7E1
ReadSkt = $B793
Screen = $0432 ; Adr. affiche mess "PLEASE USE ORIGINAL"
HOME = $FC58
*-------------------------
BIT LOWSCR ; L'image est chargée.. on l'affiche.
BIT MIXCLR ;
BIT HIRES ;
BIT TXTCLR ;
*-------------------------
LDA Slot ; X=#$60
LSR ;
LSR ;
LSR ;
LSR ;
ORA #$C0 ; A=#$C6
STA Reboot+2 ; Slot reboot (err*)
STA H1191
*-------------------------
LDA #<Reboot ; Si on presse CTRL-RESET => Reboot
STA Reset ;
LDA #>Reboot ;
STA Reset+1 ;
EOR #$A5 ;
STA Reset+2 ;
*-------------------------
Go_ver JSR Vérif ; JSR VERIFICATION DISK ($1EF9)
*-------------------------
* Sortie vérif avec : $1EB9 = #$10
*
$1EBA = #$0B
JSR
H1003 ; BLOADER PROGRAMME.. BOOT CONTINUE OK.
* Une routine move ram/aux, a été chargée avec
* le boot2 ($B700) en $B500-B6FF. Elle est ici
* mise à son adr. d'execution, soit en $280...
* Le source de cette routine est sur ce disk.
LDY #$4F ; Move de :
Lp1 LDA HB600,Y ;
STA H0380,Y ; $0380+4F soit $03CF
DEY ;
BPL Lp1 ;
INY ;
Lp2 LDA HB500,Y ;
STA H0280,Y ; $0280
DEY ;
BNE Lp2 ; à $0180
*------------------------- BLOADER JEU + JMP $1000
* LANGUAGE CARD 1 $D000-FDFF ( PISTE $1C,0D à $1A,00 )
LDA #$1C ; Piste $1C ( à vérifier )
STA Piste ;
LDA #$0D ; Secteur $0D ( id. )
STA Secteur ;
LDA #$2E ;
STA NbSect ;
LDA #$FD ; Adr.hi buffer ( #$FD )
STA Buffer+1 ;
JSR ReadSkt ; Read.
* Première des 2 vérifications des résultats de la vérif disk
Check1 LDA H1EB9 ; Ils se croient malins de revérifier ça ?
CMP #$10 ;
Go_vérif BCS Go_ver ; Erreur read.. est-ce le bon disk.. (retry)
* LOAD 64K AUX.MEM par groupe de 3 pistes soit $30 pages.
*
* BLOAD1 $6000-$8FFF ( PISTE $19,0F à $17,00 )
* BLOAD2 $6000-$8FFF ( PISTE $16,0F à $14,00 )
* BLOAD3 $6000-$8FFF ( PISTE $13,0F à $11,00 )
* BLOAD4 $6000-$8FFF ( PISTE $10,0F à $0E,00 )
* BLOAD5 $6000-$8FFF ( PISTE $0D,0F à $0B,00 )
H1E63 LDA #$8F ;
STA Buffer+1 ;
LDA #$30 ;
STA NbSect ;
JSR ReadSkt ;
LDA Cnt_Aux ; Paramètre d'entrée..
STA
$FD ; mis en $FD. (voir autre source)
JSR H0280 ; JSR $0280 ( MOVE ? )
LDX Cnt_Aux ; Cnt_Aux = Cnt_Aux + 01
INX ;
STX Cnt_Aux ; ( de 01 à 05 )
CPX #$06 ;
BNE H1E63 ;
BIT $C081 ; ram enable
JSR HOME ;
BIT TXTSET ; Mode texte
* BLOAD $2000-8FFF ( PISTE $0A,0F à $04,00 )
LDA #$0A ;
STA Piste ;
LDA #$70 ;
STA NbSect ;
LDA #$8F ;
STA Buffer+1 ;
JSR ReadSkt ;
* Construction clé $0FFF soit $1000 pour le RTS = JMP $1000
LDA Secteur ; Secteur = #$0F
LDX #$05 ;
PHA
; P=0F,
:< TXA ;
STA H03BF,X ; H03BF + $05 = $0F
DEX ;
BPL :< ;
TXA ;
PHA
; P=0F,FF d'où adr. $0FFF soit $1000.
* Ultime vérification des résultat de la vérif disk
Check2 LDA H1EBA ; Ils se croient malins de revérifier ça ?
CMP #$0B ;
BCS Go_vérif ; Erreur read.. est-ce le bon disk.. (retry)
* Saut au jeu ( JMP $1000 via RTS )
Go_Game
RTS
; PLA PLA : FF 0F soit $FFF +1 soit JMP $1000
*-------------------------
Reboot JMP $C600 ; (poke ici slot^$C0 pour redemarrer itou)
*-------------------------
Cnt_Aux HEX 01 ; Compteur de chargements ram_aux
H1EB9 HEX DD ; Résultat vérification disk 1
H1EBA HEX A9 ; Résultat vérification disk 2
*-------------------------
Tempo STA $DD ; Deux boucles l'une dans l'autre
Wait_Lp LDA #$B4 ; et on compte des valeurs.. égal..
Wait_Val CMP Wait_Val ; Wait_Val = $CD
SEC
; pas égal.. on continue..
SBC #$01 ; et le temps passe..
BNE Wait_Val ; et les oiseaux chantent..
DEC
$DD ; sur les branches, jusqu'à ce que..
BNE Wait_Lp ; tout le temps se soit écoulé..
RTS ;
*------------------------- C'EST UNE INFAME COPIE.
Plante BIT $C081 ; ram enable.
JSR HOME ; Efface l'écran.
BIT TXTSET ; Passe en mode texte (était en HGR)
BIT LOWSCR ; Passe en page1 texte
LDX #$12 ; #$12 caractères à afficher
:< LDA Texte,X ; Prends caractère à afficher un à un
STA Screen,X ; Place ce caractère sur l'écran
DEX
; passe au caractère suivant..
BPL :< ; et boucle ...
Plantage JMP Plantage ; puis boucle infinie.. planté!
*-------------------------
Texte ASC "PLEASE USE ORIGINAL"
*------------------------- VERIFICATION DISK ORIGINAL
Vérif LDX Slot ;
LDY #$00 ; Initialisation
valeurs de départ
STY H1EB9 ; résultats vérif.. qui
vont bouger!
LDA #$4A ; et swinguer!
STA H1EBA ;
* Start Drive
LDA $C089,X ; Drive on
LDA $C08C,X ;
:< CMP $C08C,X ;
BNE
:< ; Look for Start of Track (
sector 00 )
LDA #$FA ; Wait before read
JSR Tempo ;
* Recherche headers : ( CC AA 96 )
Start_Rd LDA $C08C,X ; Lecture nibble
BPL *-3 ;
DEC H1EB9 ; Nibble lu (compteur -1)
BNE :>> ; $FF?
DEC H1EBA ; Nibble lu (compteur suivant -1)
BEQ Go_Plante ; Sortie.. PLANTAGE !
:>> CMP
#$CC ; Est-ce un nibble
valide. = ( CC )
BNE Start_Rd ; non.. on recommence;
LDA $C08C,X ; Lecture nibble
BPL *-3 ;
CMP
#$AA ; Est-ce un nibble
valide. = ( AA )
BNE
:>> ; non.. on revient en arrière.
LDA $C08C,X ; Lecture nibble
BPL *-3 ;
CMP
#$96 ; Est-ce un nibble
valide. = ( 96 )
BNE Start_Rd ; non..
* Remet 00 en H1EB9
STY H1EB9 ; =======> STOCKE xx en HB7E9
* Recherche headers : ( D5 DE AA EB )
Cnt_Veri LDA $C08C,X ; Lecture nibble
BPL *-3 ;
INC H1EB9 ; =======> MODIFIE VALEUR 01
CMP
#$D5 ; Est-ce un nibble
valide. = ( D5 )
BNE Cnt_Veri ; non ?
Rd LDA $C08C,X ; Lecture nibble
BPL *-3 ;
:< CMP
#$DE ; Est-ce un nibble
valide. = ( DE )
BNE Rd ; non ?
LDA $C08C,X ; Lecture nibble
BPL *-3 ;
CMP
#$AA ; Est-ce un nibble
valide. = ( AA )
BNE :< ; non ?
LDA $C08C,X ; Lecture nibble
BPL *-3 ;
CMP
#$EB ; Est-ce un nibble
valide. = ( EB )
BNE :< ; non ?
STY
H1EBA ; =======> STOCKE xx en VALEUR 02
INY
; Y = Y + 1
BNE End_ver ; Si Y <> 00 then FIN VERIF.
RTS
; Sortie .
*-------------------------
Go_Plante JMP Plante
*-------------------------
End_ver LDA $C08C,X
BMI a
LDA $C08C,X
BMI a
LDA $C08C,X
BMI b
LDA $C08C,X
BMI b
LDA $C08C,X
BMI b
a BIT H1EBA ; =======> USES VALEUR 02
NOP
NOP
NOP
NOP
DEY
BEQ Check
BNE End_ver
b INC H1EBA ; =======> MODIFIE VALEUR 02
NOP
NOP
NOP
NOP
BEQ Check
BNE End_ver
*------------------------- CHECK RESULTS
Check LDA H1EB9 ; Il faut sortir avec : $1EB9 = #$10
CMP
#$10
;
$1EBA = #$0B
BCS Go_Plante ;
LDA H1EBA ;
CMP #$0B ;
BCS Go_Plante ; Sinon...plantage.
*-------------------------
Ok_Exit LDA $C088,X ; Drive off
RTS
; ok. exit vérif
H0280 = $0280
H0380 = $0380
H03BF = $03BF
H1003 = $1003
H1191 = $1191
HB500 = $B500
HB600 = $B600
*-------------------------
TXTCLR = $C050
TXTSET = $C051
MIXCLR = $C052
LOWSCR = $C054
HIRES = $C057
Les programmeurs fous pourront comme moi la désosser completement. Mes
remarques en bord de listing devraient les guider parfaitement clairement
s'ils sont perdu un tant soit peu.
COMPRENDRE LE FONCTIONNEMENT DE LA VERIF , ET L'ANNULER
--------------------------------------------------------------
( Fa - ciiiii - le ! )
Je vais ici simplement vous parler de ce qui est interessant pour nous, dans
ce listing assez long, ma foi.. ok?
La vérification a pour fonction de lire le disk , de recherche un CC AA 96
et d'autres nibbles D5 DE AA EB par exemple... et doit sortir avec deux
valeurs, ou bien planter.
Si le format lu par la vérif n'est qu'un format 3.3 locksmith, la vérif
le remarquera tout de suite.. et le message fatidique apparaitra.
Si la format lu est écrit par un copieur fou et contient bien le CC AA 96
etc.. la vérif sortira sans afficher le message mais les valeurs de sorties
ne seront pas les bonnes.. et une vérif plus loin dans le bloader de ces
deux valeurs entrainera un plantage et l'affichage du message "use original".
Toute copie donc, entrainera l'affichage du message "use original disk". Ok?
Mais à différents niveaux dans la vérif, non visibles de l'utilisateur.
On remarque en listant la fin de la vérif (label "check" et suite..)
que la vérif ne note rien de plus que deux valeurs qui ne sont pas
utilisées plus loin que dans la suite du bloader. On peut penser à
mettre les bonnes valeurs dans ces adresses, et à sortir de la vérif (RTS)
ou bien penser à completement détourner la vérif.
Dans les explications qui vont suivre, je vais parler en labels du source
car cette vérif est relogée selon les originaux, et les adr. changent trop.
Il vous suffit de rechercher le label dont je parle dans le source (merlin,
option "F" pour find) et de regarder les instructions qui s'y trouvent.
Enfin, il suffira de rechercher ces instructions dans une nouvelle vérif
relogée pour venir à bout d'un nouvel original datasoft. c'est simple.
Voici ce qu'il faut penser à annuler (1ere méthode) :
-----------------------------------------------------
1. Annuler le JSR Vérif (Label Go_ver, au début du listing)
2. Annuler la routine Check1 (annuler le CMP)
3. Annuler la routine Check2 (annuler le CMP)
Ici, ca donnerait les modifications du source, suivantes :
Go_ver NOP ; au lieu de JSR Vérif (3 octets)
NOP ;
NOP ;
Check1
NOP
; au lieu de LDA H1EB9 (enlevement facultatif)
NOP ;
NOP ;
NOP
; au lieu de CMP #$10
NOP ;
Go_vérif NOP ; au lieu de BCS Go_ver
NOP ;
Check2
NOP
; au lieu de LDA H1EBA (enlevement facultatif)
NOP
NOP
NOP
; au lieu de CMP #$0B
NOP
NOP
; au lieu d BCS Go_vérif
NOP
Ou bien plutot (2eme méthode) :
-------------------------------
1. Remplacer le JSR Vérif (Label Go_ver, au début du listing)
par un JSR à une routine qui place les deux bonnes valeurs
dans les deux bonnes adresses (sub-routine du meme type que celle
vue dans les -fou,fou,fou- cours 10 et 10.2)
Ici, ca donnerait pour force 7, les modifications du source, suivantes :
Go_ver JSR Poke ; au lieu de JSR Vérif
Poke LDA
#$10 ; à la fin de la
vérif, il reste tjrs un peu de place
STA H1EB9 ;
LDA #$0B ;
STA H1EBA ;
RTS
; sub_routine (fin : RTS)
J'espère que cette étape ne vous posera aucun probleme : c'est la + importante
SUB-ROUTINE POUR LE CHARGEMENT
------------------------------------
Nous avons vu dans ce source que le boot se faisait en chargeant une routine
en $B500; qu'il déplacait ensuite en $280..etc..
C'est une routine simple permettant le chargement de données en carte
auxiliaire (chat mauve, 128k, appelez là comme ca vous chante..).
Les données sont chargées en ram normale, puis movées en ram_aux.
Le listing complet et désossé de cette routine move_aux est en catalog
en fichier source sur ce disk.. en voici ici le principal (parms entry),
car elle complete le bloader ci-dessus.
* Routine chargée au boot FORCE 7
* Complément du bloader + vérif
*
* 3 pistes viennent de se charger de $6000 à $8FFF
* Il faut les placer en ram_Aux selon le compteur en $FD
H0280 LDA $FD ; Valeur de $01 à $05 ( buffer aux place )
LDX
#$05 ; Vérifie les valeurs des cases ram_aux
Lp CMP Cat,X ; à charger..
BEQ
:> ; si elles sont toutes à zero, alors
DEX ;
ma foi..
BNE Lp ;
RTS ;
on rentre à l'appelé.. fin load ram_aux
:> LDA Cat ; Zéro la case correspondant
STA Cat,X ; à ce que l'on va y placer maintenant
LDA
$FD ; Sauvegarde le num.case à remplir
STA Cat ; maintenant en Cat
LDA Buf,X ; Prend l'adr.hi buffer équivalent...
TAX ; >X
* Copie cette routine en ram_aux
...
...
*------------------------------
Buf HEX 60104070A0D0
*------------------------------
Cat HEX 000102030405
*------------------------------
La suite de ce cours dans le fichier 2... G.
===============================================================================
Retour sommaire
Cours 20 data.
===============================================================================
COURS 20 : PROTECTION DATASOFT
1988
Godfather
===============================================================================
Fichier
2
Révision 1.00
Salut et salut les jeunes!
Fixs intégrés
-------------
1. Le bloader vs facilite tout ( réutiliser le bloader et changer le JMP Game)
2. Fix intégré au boot, via rwts du boot.
Copieur d'originaux
-------------------
1. Pourquoi aucun copieur habituel n'arrive à en tirer de bonne copie ?
2. Faire un copieur adapté à ce format vérifié.. comment faire ?
Complements
-----------
1. Mise en catalog , que peut-on envisager d'assez simple en fonction de ça ?
2. Mad compactor , fac-iiiii-le !..
===============================================================================
Retour sommaire
Les programmes de ce disk.
===============================================================================
COURS 20 : PROTECTION DATASOFT 1988 , LES PROGRAMMES DE CE DISK Godfather
===============================================================================
Salut et salut,
Ce disk contient tous les programmes necessaires à la bonne compréhension et
application de ce cours, avec tous les sources merlin pro à l'appui comme tjrs.
A savoir...
BOOT TRACER DATASOFT
1.00
( nom : BT.DATASOFT )
-------------------------
Pour boot tracer vos originaux jusqu'à la vérif du disk original.
L'adresse de suite du boot (vérif) est affichée à la fin du boot tracing par
ce programme fou, dont le source est également présent.
C'est pas très balaise : boot3.3, comme on en parle ds ce cours 20.
VERIFICATION DISK
DATASOFT
( nom : DS.VERIFICATION DISK )
--------------------------
La routine de vérif du disk, brunable.. et reconstituée en source.
C'est là le principal du cours. Le source est abondamment commenté comme tjrs.
ROUTINE RAM AUXILIAIRE
MOVE
( nom : DS.MOVE MEM AUX )
---------------------------
La routine qui se charge en boot1 avec la rwts et qui est appelée par le
bloader , movée un $280 , pour charger des données en ram auxiliaire.
ROUTINE CODAGE / DECODAGE
DATASOFT
( nom : DS.CODE DECODE )
----------------------------------
La routine de décodage issue de la protection v2.00 de Datasoft vue dans
ce cours, avec la routine de codage adaptée. source en catalog.
Si vous avez d'autres idées de programmes ou de routines permettant de
faciliter le déplombage de tels softs, ou de les améliorer automatiquement
et sensiblement (mise en catalog, fboot, etc...?) , merci de bien vouloir
m'en parler.. pour améliorer ce cours comme vous le souhaitez.
Amicalement, Godfather
===============================================================================
Retour sommaire
Appendix utilitaires.
UPDATE 07/07/88
TOUS LES UTILITAIRES DES COURS DE DEPLOMBAGE PAR GODFATHER
================================================================
BIBLIOTEQUE D'UTILITAIRES / APPENDIX
Pour plus de renseignements, contactez moi en teletel3 code RTEL bal GODFATHER
Cours 1 : Tout sur les protections par Dos
Patched
Révision 4.10
-------------------------------------------------------------------------------
Advanced Demuffin 1.1.................................................The Stack
Plomb Disk Patched v1.08..............................................Godfather
Cours 2 : Tout sur les protections par Dos 3.3
modifié
Révision 1.2D
-------------------------------------------------------------------------------
Break....................................................................Tsunoo
Dos 3.3 Boot Tracer...................................................Godfather
Adv Dem. Boot Tracer 1.2..............................................Godfather
Cours 3 : Tout sur la RWTS
3.3
Révision 2.51
-------------------------------------------------------------------------------
Source complet et commenté de la RWTS...................................Wozniak
Rt.Rwts........................................................................
Mobby Disk II.....................................................The Acs-Dijon
Cours 4 : Tout sur le DOS
3.3
Révision 2.65
-------------------------------------------------------------------------------
Source complet et commenté du Command Handler (DOS 3.3).................Wozniak
Disket-Scopie.......................................................Hebdogiciel
Dos Library 1.00 (en face B)..........................................Godfather
Disk Recovery....(en face B caché).............................................
Cours 5 : Tout sur la signatures d'images 32 sect. accès direct Révision 3.61
-------------------------------------------------------------------------------
VENDU SEPAREMENT DU COURS : Scanner double haute resol...(c) Godfather's P. #10
Picscan (+ Source Reconstitué Merlin Pro).............................The Alien
Chasseur d'Images...............................................Frédéric Latour
Smart Scan + Error..............................................David Microcosm
Quick Seeker................................................Cochonou Crack Band
Picture Finder........................................................Mister DD
Indiscretion 2.00......................................................Patchman
Manual Scan.............................................................Copyart
Autoscan.......................................................rr...Chip Select
Graphique Scan...........................................................Gateau
Oucéti ? (+ Source Merlin Pro).....................................Oliver Twist
Loquesmisse 5.0 (Jansky.Scan)...............................Le comcombre masqué
Window Works +Doc vf............................................Nibble Magazine
Mega-graph...........................................................Mega Match
Cours 6 : Tout sur le Plombage/Deplombage par Dos Patched Révision 1.60
-------------------------------------------------------------------------------
Plomb Disk Gdf v1.08 (Patched D4 AA EB)...............................Godfather
Locksmith 6.0 Plombeur................................................Godfather
Locksmith 6.0 Déplombeur..............................................Godfather
Locksmith 6.0 Copieur de softs plombés................................Godfather
Copy II+ 5.x Fixed.....................................................Patchman
Disk Muncher 8.0......................................................The Stack
Cours 7 : Trucs en
vrac...
Révision 2.30
-------------------------------------------------------------------------------
Plomb.Disk7 Vérif.....................................................Godfather
Sread/Swrite (Ajoute deux commandes au DOS 3.3)..............Hardcore Computist
Convert Hex/Decimal......................................................Nibble
Comute_2*Haute résolution graphique....................Godfather / Oliver Twist
Cours 8 : Tout sur la recherche d'octets (2
faces)
Révision 3.10
-------------------------------------------------------------------------------
Disk Fixer 4.00................................................................
Copy II+ 5.x.............................................Central Point Software
Recherche d'Octets.....................................................Pom's 29
Core Disk Searcher...........................................Hardcore Computist
Scan Disk Eor 1.00.......................................................Kristo
Anstrom 2.00............................................Dany Sector from P.A.D.
Searcher..........................................................Captain Crack
Zap (version Dos 3.3 / David-Dos)..............................................
Cours 9 : Tout sur la signature d'images
compressées
Révision 1.00
-------------------------------------------------------------------------------
Traitimage 1.4..................................................Frédéric Latour
Infogrammes Comp' Décomp'...........................................The Softman
Beagle Bros Comp' Décomp'...........................................Beagle Bros
C.C.B. Comp' Décomp'..............................................Laurent Rueil
Hebdo Comp' Décomp'.................................................Hebdogiciel
N.4 Comp' Décomp'..............................................................
Hires Pictures Scrunch' Unscrunch'.............................................
Pac Comp' Décomp'..............................................................
Cours 10 : Tout sur la dernière protection
EPYX
Révision 1.61
-------------------------------------------------------------------------------
VENDU SEPAREMENT DU COURS : Epyx Copy 2.64 (C) Godfather's Products.....Kristo
VENDU SEPAREMENT DU COURS : Epyx Boot Maker (C) Godfather's Products........Gdf
Cours 10 suite : Tout sur l'évolution de la protection EPYX Révision 1.00
-------------------------------------------------------------------------------
Cours 11 : Tout sur la technique de mise en CATALOG simple Révision 1.65
-------------------------------------------------------------------------------
Cours 11.2 : Les nouvelles techniques de mise en CATALOG Révision 1.00
-------------------------------------------------------------------------------
New Break 1.00 (Réinitialise dos)............................................HC
Wildcard Maker 1.00 (Accès direct disk)...............................Godfather
Wildcard Maker Sam 1.00 (Fichiers RAM 3.3)......................Sam + Godfather
Fastload cat 1.00.....................................................The Stack
Cours 12 : Tout sur les signatures des boots en mode TEXTE Révision 1.90
-------------------------------------------------------------------------------
Cours 13 : Tout sur la pratique : signature d'une l'image compr' Révision 1.00
-------------------------------------------------------------------------------
Cours 14 : Tout sur les protections ACTIVISION. 1er Chapitre. Révision 2.00
-------------------------------------------------------------------------------
VENDU SEPAREMENT DU COURS : PLOMBEUR ACTIVISION 1 (C) Godfather's Products #4
Cours 15 : Tout sur les protections $23
pistes
Révision 1.10
-------------------------------------------------------------------------------
Vérification présence Piste $23 (source Merlin Pro)...................Godfather
Vérification en basic retenue (erreur).............................Oliver Twist
Disk Muncher 8.0 $23 pistes...........................................Godfather
D.O.S. Disk Optimizer System.........................................The Wizard
Nibbles Away II vC3............................................................
Cours 16 : Tout sur les protections ACTIVISION. 2eme protection. Révision 1.00
-------------------------------------------------------------------------------
Acti.Demuffin (source Merlin Pro).....................................Godfather
Advanced Demuffin Activision...........................................Mister Z
Fast Boot Activision (source Merlin Pro!)...............Godfather et Activision
Crazy Copy...............................................Lock-Killer Laboratory
Cours 17 : Tout sur la protection actuelle ORIGIN SYSTEMS Révision 1.00
-------------------------------------------------------------------------------
Origin.Demuffin (source Merlin Pro)...................................Godfather
Super_Iob.Ultima4............................................Hardcore Computist
Cours 17.2 : La nouvelle protection d'OSI : Ultima
5
Révision 1.00
-------------------------------------------------------------------------------
Adv.Dem 1.1 + Module Ultima 5.RWTS...............................Deny (THE ACS)
Cours 18 : Fixez vous la
vie
Révision 1.10
-------------------------------------------------------------------------------
(Programmes de recherche d'octets du cours 8 à savoir maitriser..)
Cours 18.2 : Fixez vous les jeux d'aventure, et fixs integré! Révision 1.00
-------------------------------------------------------------------------------
Fix modele............................................Captain Crack + Godfather
Fix vies..............................................................Godfather
Fix immortel..........................................................Godfather
Fix vies + immortel...................................................Godfather
Cours 19 : Protection 18 secteurs Gustavson
BR0DERBUND
Révision 1.00
-------------------------------------------------------------------------------
Gogsmith 1.00.........................................The Highlanders (ACS+GDF)
Copieur 18.N6..........................................................Numéro 6
RWTS18...........................................................Stef.Gustavson
Cours 20 : Protection actuelle
Datasoft
Révision 1.00
-------------------------------------------------------------------------------
DS.Code Decode (+Source)..................................Datasoft + Godfather
DS.Move Ram Aux (+Source)..............................................Datasoft
DS.Boot tracing (+Source).............................................Godfather
DS.Verification Disk (+Source).........................................Datasoft
Cours 21 : Protection Electronic Arts
MCode
Révision 0.00
-------------------------------------------------------------------------------
(en préparation)
Cours 21.2 : Protection Electronic Arts
1988
Révision 0.00
-------------------------------------------------------------------------------
(en préparation)
Retour sommaire
Déplombage Force 7.
_____________________________________________________________________________
!
!
! Cracking of FORCE 7 (C) DataSoft COPPERFIELD & LOOCKHEED, le 8/7/88 !
!_____________________________________________________________________________!
Voici donc le cracking d'un soft acheté par le Black Chest (auquel toute
personne sensée devrait etre un membre...). Ce soft est fait par une des
nombreuses sous-boites de Datasoft : Intellicreations, la meme boite, ou plutot
le meme programmateur qui avait fait Dark Lord, jeu d'aventure avec de superbes
musiques. Ce programmateur, Kyle Freeman, est à l'origine des musiques de Dark
Lord et de celle de Force 7 (soit dit en passant : toutes ces musiques sont
extraites et en catalogue, et seront réunies dans un recueil de musiques que
nous vous concoctons), chaque fois que vous verrez son nom, à la présentation
d'un soft, attendez-vous à avoir des musiques agréables aux tympans usés par le
bruit sourd du <CTRL-G>.
Ceci-dit passons au déplombage proprement dit : malgré un beau soft, un
plombage trés médiocre, et à plombage rapide, déplombage rapide; à classer dans
les "déplombages minute".
Tout d'abord premier test : essai de copie au LFB (Locksmith Fast Backup).
Résultat : le soft se laisse copier sans aucun problème, jusqu'à la piste $1D.
(Aprés cette copie sans problèmes majeurs, on se dit "facile !")
Que cela ne tienne, essayons de booter la copie.
Résultat : un message trés sympathique et trés plaisant: "PLEASE USE ORIGINAL",
Ce qui est trés sympa pour nous, car le message n'est codé d'aucune façon,
comme tout etre sensé l'aurait fait par un EOR, AND, ou le fait de mettre le
message à l'envers, enfin...
(A ce moment on se dit "trés facile !") premier réflexe chercher le message
qui nous amène au plantage, simple, une fois arrivé à ce message fatidique,
faire un reset et booter un David Dos 1 (et si vous ne l'avez pas, comme moi,
malgré son utilité, faites vous rapidement un mover en page texte),
chercher le message, en remontant au dessus de ces mots doux, on trouve la
routine qui affiche ce message, en $1ECC soit P$01/S$E/$CC sur le disque,
rappelons nous-en on en aura besoin pour l'ultime phase...
Maintenant grace à ce meme David Dos, chercher $CC 1E en ram, ce qui
correspondrait soit à un JMP $1ECC (4C CC 1E) soit à un JSR, un BEQ, etc...
Une fois trouvé on regarde ce qui se passe au dessus et ainsi on arrive à
remonter jusqu'à la RWTS de Force 7, son point d'entrée est en $1E00 mais c'est
en $1EF9 que ça ce passe, et on voit vers cette adresse de nombreux $C08C
("Q6L", permet la lecture des nibbles...), suivis de CMP et BNE pas du tout
cathodiques, ils correspondent à la vérif' des bonnes entètes, autrement dit on
a mis le doigt sur la vérif'!!!
On est content, on a trouvé la vérif', alors quoi? Et bien on NOPe tout ça
(assez bestialement, il faut dire), donc en P$01/S$F, mettre à partir des
octets suivant inclus, quatre $EA : en $25, $2E, $37, $46, $4F, $58, et $61.
Seulement voila si on laisse ça comme ça et que l'on boote la disquette, on
s'apperçoit rapidement qu'une fois sur quatre nous avons encore la joie et le
privilège de voir apparaitre sur l'écran la phrase magique "PLEASE USE
ORIGINAL", pourquoi? Parcequ'il arrive, à cause de tous les NOP que l'on a
mis que la RWTS, n'est plus aussi fiable qu'avant, elle n'arrive pas à bien
lire sur la disquette, car elle n'a plus de points de repères.
L'ultime phase :
Ben alors on est fichu? Si on ne peux meme pas compter sur la RWTS...?
Non car puisque la RWTS de Force 7 saute à la routinne qui affiche le texte,
dans deux cas seulement : en présence d'une copie ou en cas de mauvaise lecture
(quoique c'est le cas précédent qui entraine celui-ci!!!), et bien nous
n'avons qu'à mettre au début de cette routinne qui nous affiche le message
fatidique (pour l'instant!!!) un JMP début de routinne de lecture.
Soit, pour concrétiser cette idée : mettre en P$1,S$E,$CC (ce qui correspond
donc au début de l'afficheur du message) : 4C 00 1E (à la place de 2C 81 C0)
Ainsi les deux cas ne sont plus envisageables : d'un nous avons NOPé les
vérifs et de deux nous avons annulé le cas de mauvaise lecture qui ne se
produisait environ une fois sur quatre puisque dans ce cas précis on
recommence à lire.
Il faut avouer que faire un fichier bien explicité sur le déplombage, prend
plus de temps que déplomber ce soft (10mn! contre plus de 45mn pour le
fichier!!! ).
Pour tout vous dire sur ce soft et sur ce qui vous attend : une version fixée
du jeu fue faite par Captain Crack & The Jokersoft, mais nous nous rendimes
comptes que (comme souvent) que le jeu fixé perdait tout son intéret car une
fois arrivé à la fin du jeu (ce qui est enfantin avec la version fixée), il ne
se passe rien, pas de scrolling, pas de musiques, RIEN. C'est alors que nous
décidames de mettre une animation pour récompenser comme il se devait le
vainqueur du jeu, et pas n'importe quelle animation! Une animation en DHGR
monocromme, ce qui est à ma conaissance une premiere, sachant que cette
animation sera faite à la main (sans utilitaire... )!!!
Alors à trés bientot pour une nouvelle version de Force 7, appelée Force 7.2!
_ _ _ _ __ ______ _ _ __ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ __ _ _ _ _ _ _ _ _
F_O_R_C_E__7______(_K_)__B_Y__C_O_P_P_E_R_F_I_E_L_D__A_N_D__L_O_O_C_K_H_E_E_D
Retour sommaire