Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.1 - CLIENT : 54.225.16.10

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Thief (Datamost, 1981)

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
qkumba



Inscrit le: 29 Jan 2012
Messages: 171

MessagePosté le: Mer 13 Sep 2017, 6:46    Sujet du message: Thief (Datamost, 1981) Répondre en citant

Berserk clone, avoid or shoot the robots while dodging their attacks.
Beware of the walls which are also electrified!

We start with a regular BOOT13 boot sector.

Code:
0800       .BYTE    1


Relocate to $0200.

Code:
0801       LDX    #$00
0803       LDA    $0800,X
0806       STA    $0200,X
0809       INX
080A       BNE    $0803
080C       JMP    $020F


Because this code replaces $0800+ with 5-and-3 decoding table.

Code:
020F       LDY    #$AB
0211       TYA
0212       STA    $3C
0214       LSR
0215       ORA    $3C
0217       CMP    #$FF
0219       BNE    $0224
021B       CPY    #$D5
021D       BEQ    $0224
021F       TXA
0220       STA    $0800,Y
0223       INX
0224       INY
0225       BNE    $0211


Load and decode sector to $0300.

Code:
0227       STY    $3D
0229       STY    $26
022B       LDA    #$03
022D       STA    $27
022F       LDX    $2B
0231       JSR    $025D
0234       JSR    $02D1


Set PROM address for modern drive.

Code:
0237       LDA    #$A9
0239       STA    $031F
023C       LDA    #$02
023E       STA    $0320
0241       JMP    $0301


Prepare to read RWTS.

Code:
0301       LDA    $0800,Y
0304       ASL
0305       ASL
0306       ASL
0307       STA    $0800,Y
030A       INY
030B       BNE    $0301
030D       LDX    $2B


9 sectors to read.

Code:
030F       LDA    #$09
0311       STA    $27


to $B600-BFFF.

Code:
0313       LDA    $03CC
0316       STA    $41
0318       STY    $40
031A       TXA
031B       LSR
031C       LSR
031D       LSR
031E       LSR
031F       LDA    #$02 ;self-modified
0321       STA    $3F
0323       LDA    #$5D
0325       STA    $3E


Read and decode sectors.

Code:
0327       JSR    $0343
032A       JSR    $0346
032D       LDA    $3D
032F       EOR    $03FF
0332       BEQ    $033A
0334       INC    $41
0336       INC    $3D
0338       BNE    $0327


Set jump address to $B700 and go there.

Code:
033A       STA    $3E
033C       LDA    $03CC
033F       STA    $3F
0341       INC    $3F
0343       JMP    ($003E)


Regular-looking DOS 3.3.

Code:
B700       STX    $B7E9
B703       STX    $B7F7
B706       LDA    #$01
B708       STA    $B7F8
B70B       STA    $B7EA
B70E       LDA    $B7E0
B711       STA    $B7E1
B714       LDA    #$01
B716       STA    $B7EC
B719       LDA    $B7E2
B71C       STA    $B7ED
B71F       LDA    $B7E3
B722       STA    $B7F1
B725       LDA    #$01
B727       STA    $B7F4
B72A       TXA
B72B       LSR
B72C       LSR
B72D       LSR
B72E       LSR
B72F       TAX
B730       LDA    #$00
B732       STA    $04F8,X
B735       STA    $0478,X


Except that this is very suspicious...

Code:
B738       LDA    #$DE
B73A       STA    $48
B73C       LDA    #$AE
B73E       STA    $31
B740       NOP
B741       NOP
B742       NOP
B743       NOP
B744       NOP
B745       STA    $B73D


Read DOS.

Code:
B748       JSR    $B793
B74B       LDX    #$FF
B74D       TXS
B74E       NOP
B74F       NOP
B750       NOP
B751       JSR    $FE93
B754       JSR    $FE89
B757       JMP    $9D84


Nothing really interesting so far.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 171

MessagePosté le: Mer 13 Sep 2017, 6:50    Sujet du message: Répondre en citant

Read routine, only 10 sectors per track.
This is standard BOOT13 format.

Code:
B793       LDA    $B7E5
B796       LDY    $B7E4
B799       JSR    $B7B5
B79C       LDY    $B7ED
B79F       INY
B7A0       CPY    #$0A
B7A2       BNE    $B7A9
B7A4       LDY    #$00
B7A6       INC    $B7EC
B7A9       STY    $B7ED
B7AC       INC    $B7F1
B7AF       DEC    $B7E1
B7B2       BNE    $B793
B7B4       RTS


RWTS entry, looks normal.

Code:
B7B5       PHP
B7B6       SEI
B7B7       JSR    $BD00
B7BA       BCS    $B7BF
B7BC       PLP
B7BD       CLC
B7BE       RTS


The RWTS is the usual one except for two routines.
This one:

Code:
BDB4       LDX    $05F8
BDB7       JSR    $B957


and this one:

Code:
BE2A       JSR    $B8F8


This is the "read address" routine.

Code:
B957       LDY    #$F8
B959       STY    $26
B95B       INY
B95C       BNE    $B962
B95E       INC    $26
B960       BEQ    $B955
B962       LDA    $C08C,X
B965       BPL    $B962


Ahhh, the first check using a zpage value from earlier.

Code:
B967       CMP    $31
B969       BNE    $B95B
B96B       NOP
B96C       LDA    $C08C,X
B96F       BPL    $B96C


The second one.

Code:
B971       CMP    $48
B973       BNE    $B967
B975       LDY    #$03
B977       LDA    #$00
B979       STA    $27
B97B       LDA    $C08C,X
B97E       BPL    $B97B
B980       NOP
B981       STA    $26
B983       LDA    $C08C,X
B986       BPL    $B983
B988       ROL
B989       AND    $26
B98B       STA    $002C,Y
B98E       EOR    $27
B990       DEY
B991       BPL    $B979
B993       TAY
B994       BNE    $B955
B996       LDA    $C08C,X
B999       BPL    $B996


The third one.

Code:
B99B       CMP    $48
B99D       BNE    $B955
B99F       NOP
B9A0       LDA    $C08C,X
B9A3       BPL    $B9A0
B9A5       CMP    #$F7
B9A7       BNE    $B955
B9A9       CLC
B9AA       RTS


So the prologue is only two nibbles long: #$AE #$DE
Epilogue is #$DE #$F7.

This is the "read data" routine.

Code:
B8F8       LDY    #$20
B8FA       DEY
B8FB       BEQ    $B955
B8FD       LDA    $C08C,X
B900       BPL    $B8FD


The first check using a zpage value from earlier.

Code:
B902       CMP    $48
B904       BNE    $B8FA
B906       NOP
B907       LDA    $C08C,X
B90A       BPL    $B907


The second one.

Code:
B90C       CMP    $31
B90E       BNE    $B902
B910       LDY    #$9A
B912       LDA    #$00
B914       DEY
B915       STY    $26
B917       LDY    $C08C,X
B91A       BPL    $B917
B91C       EOR    $BA00,Y
B91F       LDY    $26
B921       STA    $BC00,Y
B924       BNE    $B914
B926       STY    $26
B928       LDY    $C08C,X
B92B       BPL    $B928
B92D       EOR    $BA00,Y
B930       LDY    $26
B932       STA    $BB00,Y
B935       INY
B936       BNE    $B926
B938       LDY    $C08C,X
B93B       BPL    $B938
B93D       CMP    $BA00,Y
B940       BNE    $B955
B942       LDA    $C08C,X
B945       BPL    $B942


The third one.

Code:
B947       CMP    $31
B949       BNE    $B955
B94B       NOP
B94C       LDA    $C08C,X
B94F       BPL    $B94C
B951       CMP    #$F5
B953       BEQ    $B9A9
B955       SEC
B956       RTS


So the prologue is only two nibbles long and reversed: #$DE #$AE.
Epilogue is #$AE #$F5.

Then we return to the DOS entrypoint.
It's weird, too.

Code:
9D84       JMP    $AE8E


We follow it, it reads two sectors and runs the routine.

Code:
AE8E       LDA    #$03
AE90       STA    $B7EC
AE93       LDA    #$09
AE95       STA    $B7ED
AE98       LDA    #$80
AE9A       STA    $B7F1
AE9D       LDA    #$00
AE9F       STA    $B7F0
AEA2       LDA    #$01
AEA4       STA    $B7F4
AEA7       LDA    #$B7
AEA9       LDY    #$E8
AEAB       JSR    $B7B5
AEAE       INC    $B7ED
AEB1       INC    $B7F1
AEB4       LDA    #$B7
AEB6       LDY    #$E8
AEB8       JSR    $B7B5
AEBB       JMP    $8000


Obfuscated entrypoint.

Code:
8000       LDA    $047E
8003       STA    $0478
8006       JMP    ($81BE)

81BE       .WORD  $8104


A protection check.
Turn on the drive, seek to track 4, verify format.

Code:
8104       LDX    #$60
8106       LDA    $C089,X
8109       JSR    $819C
810C       LDA    #$04
810E       JSR    $8155


Seek to track 5, verify format *and length*.

Code:
8111       LDA    #$05
8113       JSR    $8155
8116       SEC
8117       LDA    $81BA
811A       SBC    $81BC
811D       STA    $8153
8120       LDA    $81BB
8123       SBC    $81BD
8126       STA    $8154
8129       BMI    $8130
812B       BEQ    $8140
812D       JMP    $C600
8130       CLC
8131       LDA    $8153
8134       ADC    #$14
8136       LDA    $8154
8139       ADC    #$00
813B       BMI    $812D
813D       JMP    $8144


Should be only a small gap between #$FF and #$DB.

Code:
8140       CMP    #$15
8142       BCS    $812D
8144       LDX    #$60
8146       LDA    $C088,X
8149       LDA    $0478
814C       ASL
814D       STA    $047E
8150       JMP    $AEBE


Verifying the format.
Seek to requested track, watch for #$FF #$FF.

Code:
8155       LDX    #$60
8157       ASL
8158       JSR    $BA08
815B       LDA    #$00
815D       STA    $81BA
8160       STA    $81BB
8163       LDA    $C08E,X
8166       LDA    $C08C,X
8169       BPL    $8166
816B       CMP    #$FF
816D       BNE    $8166
816F       NOP
8170       LDA    $C08C,X
8173       BPL    $8170
8175       CMP    #$FF
8177       BNE    $8166
8179       NOP


Watch for #$DB and count nibbles until then.

Code:
817A       LDA    $C08C,X
817D       BPL    $817A
817F       CMP    #$DB
8181       BEQ    $818E
8183       INC    $81BA
8186       BNE    $817A
8188       INC    $81BB
818B       JMP    $817A
818E       NOP


#$DB and then #$AD or reboot.

Code:
818F       LDA    $C08C,X
8192       BPL    $818F
8194       CMP    #$AD
8196       BEQ    $819B
8198       JMP    $C600
819B       RTS


Back to DOS, after this the rest is normal.

Code:
AEBE       LDA    $B7E9
AEC1       JMP    $9D87


We can use Advanced Demuffin to copy tracks $03-22, sectors $00-09 from each.
Then we put regular DOS on the disk (tracks $00-02) and all protection is defeated.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 2893
Localisation: Le Chesnay, France

MessagePosté le: Jeu 14 Sep 2017, 10:00    Sujet du message: Répondre en citant

One step further than the usual $31 DOS 3.X protection, that's cool!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com