Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.65 - CLIENT : 54.80.83.123

 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 

Decimal discovery (DLM, 1986)

 
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
toinet
Site Admin


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

MessagePosté le: Lun 11 Nov 2013, 13:57    Sujet du message: Decimal discovery (DLM, 1986) Répondre en citant

Part of the "Arcademic Intermediate Math" series from Developmental Learning Materials, Decimal discovery features challenging decimal games, a top ten list, a student record system, a response analysis, an editor for teachers to write their own game problems, a worksheet generator and a scan response code for students who have physical difficulty manipulating a standard keyboard!

PROTECTION TYPE
- This is a standard DOS 3.3 16-sec disk
- Change of epilog markers: D5AA96 DEAA/ABFF, D5AAAD DEAA/ABFF
- A nibble check

HOW TO COPY
- Launch Advanced Demuffin 1.4
- Pass boot by pressing P
- Enter the monitor
- Remove check of epilog markers:

Code:

*B930: 18 60 EA
*B98B: 18 60 EA


- Press CTRL-Y
- Copy the disk using standard values

Reboot and... cry! The game boots to the DOS 3.3 prompt, launches the boot program and reboots! There is another on-disk check

HOW TO CRACK
- First, get the name of the boot program (use Copy II plus) or edit T0/S9. The name of the boot program is XMGPRT1
- Alternatively, search for the pattern BD 89 C0 which can be found on T2/SE, part of the same file XMGPRT1
- The code and explanations of the protection will be in a next message
- Read T2/SE, at offset $26, replace 20 69 90 with 2C 69 90
- Save the sector back to disk

Reboot and... enjoy!

Note for a clean crack
The read header and read sector routines contain a jump to $BD16 (see T0/S3/2F and T0/S3/8B).
At $BD16, there is a check for the epilog markers: either DEAA or ABFF, meaning that the original RWTS was modified but also, that their is a weakness in the on-disk protection scheme: why would one change epilog if a check of the standard epilog values is also tolerate? So, let's make it a clean RWTS:

Code:

- T0/S3/2F: 4C 16 BD => BD 8C C0
- T0/S3/8B: 4C 16 BD => BD 8C C0
- T0/S3/90: C9 AB => C9 DE
- T0/S3/9A: C9 FF => C9 AA


Either use a one-byte crack or a 9-byte crack...

LoGo
11/2013
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Lun 11 Nov 2013, 14:03    Sujet du message: Répondre en citant

This is the disassemble of the XMGPRT1 file, loaded at $9000 which performs a nibble check

Code:

0000:20 E3 03       JSR   $03E3         <= get IOB
0003:85 FB          STA   $FB           
0005:84 FA          STY   $FA           
0007:A9 C5          LDA   #$C5          <= push #$C5
0009:48             PHA                 
000A:A9 00          LDA   #$00         
000C:85 FC          STA   $FC           
000E:A2 03          LDX   #$03         
0010:BC 49 90       LDY   $9049,X       
0013:91 FA          STA   ($FA),Y       
0015:CA             DEX                 
0016:10 F8          BPL   $0010         
0018:8A             TXA                 
0019:48             PHA                 <= push #$FF ($C5FF ;-))
001A:20 3C 90       JSR   $903C         
001D:A0 01          LDY   #$01         
001F:B1 FA          LDA   ($FA),Y       
0021:AA             TAX                 
0022:2C 69 90       JSR   $9069         <= call the protection
0025:68             PLA                 <= pull parameters
0026:68             PLA                 
0027:A0 00          LDY   #$00          <= RUN DECIMAL DISCOVERY
0029:84 FE          STY   $FE           
002B:B9 4D 90       LDA   $904D,Y       
002E:09 80          ORA   #$80         
0030:20 39 90       JSR   $9039         
0033:A4 FE          LDY   $FE           
0035:C8             INY                 
0036:4C 29 90       JMP   $9029         
0039:6C 36 00       JMP   ($0036)       
003C:20 E3 03       JSR   $03E3         
003F:20 D9 03       JSR   $03D9         
0042:A9 00          LDA   #$00         
0044:85 48          STA   $48           
0046:B0 6E          BCS   $00B6         
0048:60             RTS                 
0049:08             PHP                 
004A:04 0C          TSB   $0C           
004C:03             @@@                 
004D:04 D2          TSB   $D2           
004F:D5 CE          CMP   $CE,X         
0051:A0 C4          LDY   #$C4         
0053:C5 C3          CMP   $C3           
0055:C9 CD          CMP   #$CD         
0057:C1 CC          CMP   ($CC,X)       
0059:A0 C4          LDY   #$C4         
005B:C9 D3          CMP   #$D3         
005D:C3             @@@                 
005E:CF             @@@                 
005F:D6 C5          DEC   $C5,X         
0061:D2 D9          CMP   ($D9)         
0063:20 20 20       JSR   $2020         
0066:20 0D 00       JSR   $000D         

0069:BD 89 C0       LDA   $C089,X       <= turn motor on
006C:A9 56          LDA   #$56          <= number of tries
006E:85 FD          STA   $FD           
0070:A9 08          LDA   #$08         
0072:C6 FC          DEC   $FC           
0074:D0 04          BNE   $007A         
0076:C6 FD          DEC   $FD           
0078:F0 3C          BEQ   $00B6         
007A:BC 8C C0       LDY   $C08C,X       <= search for #$FB
007D:10 FB          BPL   $007A         
007F:C0 FB          CPY   #$FB         
0081:D0 ED          BNE   $0070         
0083:F0 00          BEQ   $0085         
0085:EA             NOP                 
0086:EA             NOP                 
0087:BC 8C C0       LDY   $C08C,X       <= desync
008A:C0 08          CPY   #$08         
008C:2A             ROL                 
008D:B0 0B          BCS   $009A         
008F:BC 8C C0       LDY   $C08C,X       <= #$FF
0092:10 FB          BPL   $008F         
0094:C0 FF          CPY   #$FF         
0096:D0 D8          BNE   $0070         
0098:F0 EB          BEQ   $0085         
009A:BC 8C C0       LDY   $C08C,X       
009D:10 FB          BPL   $009A         
009F:84 FC          STY   $FC           
00A1:C9 0A          CMP   #$0A         
00A3:D0 CB          BNE   $0070         
00A5:BD 8C C0       LDA   $C08C,X       
00A8:10 FB          BPL   $00A5         
00AA:38             SEC                 
00AB:2A             ROL                 
00AC:25 FC          AND   $FC           
00AE:49 FF          EOR   #$FF         
00B0:D0 04          BNE   $00B6         
00B2:DD 88 C0       CMP   $C088,X       <= we end with no errors
00B5:60             RTS                 
00B6:A8             TAY                 
00B7:DD 88 C0       CMP   $C088,X       <= exit errot
00BA:68             PLA                 <= pull parameters
00BB:68             PLA                 <= and return
00BC:99 00 90       STA   $9000,Y       
00BF:C8             INY                 
00C0:C0 8B          CPY   #$8B         
00C2:D0 F8          BNE   $00BC         
00C4:60             RTS                 <= stack pointer lost, reboot
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Lun 11 Nov 2013, 14:05    Sujet du message: Répondre en citant

And part of the modified RWTS which calls $BD16 to check the epilog markers, a weak one...

Code:

0077:85 26          STA   $26           
0079:BD 8C C0       LDA   $C08C,X       
007C:10 FB          BPL   $0079         
007E:25 26          AND   $26           
0080:99 2C 00       STA   $002C,Y       
0083:45 27          EOR   $27           
0085:88             DEY                 
0086:10 E7          BPL   $006F         
0088:A8             TAY                 
0089:D0 B7          BNE   $0042         
008B:4C 16 BD       JMP   $BD16         <= check epilog markers
008E:10 FB          BPL   $008B         
0090:C9 AB          CMP   #$AB         
0092:D0 AE          BNE   $0042         
0094:EA             NOP                 
0095:BD 8C C0       LDA   $C08C,X       
0098:10 FB          BPL   $0095         
009A:C9 FF          CMP   #$FF         
009C:D0 A4          BNE   $0042         
009E:18             CLC                 
009F:60             RTS                 
00A0:86 2B          STX   $2B           
00A2:85 2A          STA   $2A           


And the $BD16 routine:

Code:

0006:8C F8 06       STY   $06F8         
0009:A0 04          LDY   #$04         
000B:8C F8 04       STY   $04F8         
000E:A0 01          LDY   #$01         
0010:B1 48          LDA   ($48),Y       
0012:AA             TAX                 
0013:4C 34 BD       JMP   $BD34         

0016:BD 8C C0       LDA   $C08C,X       <= ABFF ?
0019:10 FB          BPL   $0016         <= or DEAA ?
001B:C9 AB          CMP   #$AB         
001D:F0 06          BEQ   $0025         
001F:C9 DE          CMP   #$DE         
0021:F0 02          BEQ   $0025         
0023:38             SEC                 <= no, error
0024:60             RTS                 
0025:BD 8C C0       LDA   $C08C,X       
0028:10 FB          BPL   $0025         
002A:C9 FF          CMP   #$FF         
002C:F0 04          BEQ   $0032         
002E:C9 AA          CMP   #$AA         
0030:D0 F1          BNE   $0023         
0032:18             CLC                 <= yes, OK
0033:60             RTS                 
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