Index du Forum
IDENTIFICATION SERVEUR : 10.14.20.198 - CLIENT : 3.237.200.21

 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 

HomeWord Writer 2.1 & Speller 2.0 (Sierra, 1984)

 
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: 3055
Localisation: Le Chesnay, France

MessagePosté le: Dim 24 Avr 2016, 19:57    Sujet du message: HomeWord Writer 2.1 & Speller 2.0 (Sierra, 1984) Répondre en citant

#831 - The HomeWord double bundle is a complete, integrated word processing system. Part of the fully integrated HomeWord productivity line. Learn the basics in minutes with audio cassette instructions. The slim user's manuals are written in plain English with plenty of illustrations and examples.

Protection type
On a standard DOS 3.3 like 16-sec disk, we get a nibble count on each one-sided floppy disk. One for the writer, one for the speller. It is important to note that both sides use volume 4.

How to copy
Use Locksmith Fast Disk Backup to copy both disks. Then, store the original disks in a dry and safe place.

How to crack
I will not detail the approach of the crack of the Writer disk as we did that in 2009 with IvanX (search for a message of 2009 in comp.sys.apple2). There was an article on Computist 23 explaining how to crack the thing (put NOP and BNE where necessary). I did a slight change on the volume management for the Writer disk and did another approach to crack the Speller one.

Launch DiskFixer v4 and
Code:

Writer disk (crack):
T10/S9/74:D0 0D -> EA EA
T10/S9/7C:EA EA -> D0 0D
Writer disk (volume):
T0/S8/15:A5 -> 24
T0/S8/25:E1 -> 00

Speller disk:
T1/S7/C8:20 12 -> AD 21


The disk images are available at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,

LoGo
4/2016
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: 3055
Localisation: Le Chesnay, France

MessagePosté le: Dim 24 Avr 2016, 19:58    Sujet du message: Répondre en citant

Some code for HomeWord Writer:

Code:

Where the protection check lies...

-------------- DISK EDIT ---------------
TRACK $10/SECTOR $09/VOLUME $FE/BYTE $74
----------------------------------------
$00: C9 8D F0 03 EE 3E 06 A4    I.0C.>F$
$08: 0C B9 04 FF A8 A9 00 99    L9D?()@.
$10: 07 FF 4C 1D 2E E6 10 20    G?L].&P
$18: CF 27 4C 20 2E 20 0C 28    O'L . L(
$20: 60 B7 20 6E 27 20 D9 28    `7 .' Y(
$28: 90 02 B0 27 A4 0C B9 08    .B0'$L9H
$30: FF 29 20 D0 07 B9 08 FF    ?) PG9H?
$38: 29 04 A9 80 8D 34 06 20    )D)..4F
$40: 44 2E 60 56 A9 00 8D EC    D.`V)@.,
$48: B7 AA 8E ED B7 8E F4 B7    7*.-7.47
$50: A9 B7 A0 E8 20 31 2F BD    )7 ( 1/=
$58: 89 C0 A9 05 8D 02 BB 20    .@)E.B;
$60: 93 2E 10 01 20 C8 C0 30    ..PA H@0
$68: 5D 8C C0 90 F8 BD 8C C0    ].@.8=.@
$70: 10 0A C9 C9>EA EA<BD 88    PJII**=.
$78: C0 4C 8B 2E>D0 0D<BD 8C    @L..PM=.
----------------------------------------

----------- DISASSEMBLY MODE -----------
0844:A9 00          LDA   #$00         
0846:8D EC B7       STA   $B7EC         
0849:AA             TAX                 
084A:8E ED B7       STX   $B7ED         
084D:8E F4 B7       STX   $B7F4         
0850:A9 B7          LDA   #$B7          ; read
0852:A0 E8          LDY   #$E8         
0854:20 31 2F       JSR   $2F31         
0857:BD 89 C0       LDA   $C089,X       ; turn drive on
085A:A9 05          LDA   #$05          ; nb of tries
085C:8D 02 BB       STA   $BB02         
085F:20 93 2E       JSR   $2E93         ; check nibbles
0862:10 01          BPL   $0865         
0864:EA             NOP                 
0865:C8             INY                 ; return with Y=0
0866:C0 30          CPY   #$30         
0868:5D 8C C0       EOR   $C08C,X       ; try a checksum
086B:90 F8          BCC   $0865         
086D:BD 8C C0       LDA   $C08C,X       ; end nibble is C9
0870:10 0A          BPL   $087C         
0872:C9 C9          CMP   #$C9         
0874:EA             NOP                 ; was D0
0875:EA             NOP                 ; was 0D
0876:BD 88 C0       LDA   $C088,X       ; turn drive off
0879:4C 8B 2E       JMP   $2E8B         ; exit
087C:D0 0D          BNE   $088B         ; was NOP NOP
087E:BD 8C C0       LDA   $C08C,X       
0881:30 EF          BMI   $0872         
0883:CE 02 BB       DEC   $BB02         ; next try
0886:D0 D7          BNE   $085F         ; if exists
0888:4C 76 2E       JMP   $2E76         ; or leave
088B:AD 02 BB       LDA   $BB02         ; return value
088E:85 08          STA   $08           ; here
0890:85 09          STA   $09           ; and there
0892:60             RTS                 
0893:A9 1C          LDA   #$1C          ; read the nibbles
0895:8D 00 BB       STA   $BB00         
0898:BD 8E C0       LDA   $C08E,X       
089B:BD 8C C0       LDA   $C08C,X       
089E:10 FB          BPL   $089B         
08A0:C9 D5          CMP   #$D5         
08A2:EA             NOP                 
08A3:EA             NOP                 
08A4:F0 0F          BEQ   $08B5         
08A6:CE 01 BB       DEC   $BB01         
08A9:D0 F0          BNE   $089B         
08AB:CE 00 BB       DEC   $BB00         
08AE:D0 EB          BNE   $089B         
08B0:68             PLA                 ; pull call
08B1:68             PLA                 
08B2:4C 83 2E       JMP   $2E83         ; return
08B5:BD 8C C0       LDA   $C08C,X       
08B8:10 FB          BPL   $08B5         
08BA:C9 AA          CMP   #$AA         
08BC:D0 E2          BNE   $08A0         
08BE:48             PHA                 
08BF:68             PLA                 
08C0:BD 8C C0       LDA   $C08C,X       
08C3:10 FB          BPL   $08C0         
08C5:C9 96          CMP   #$96         
08C7:D0 F1          BNE   $08BA         
08C9:A0 05          LDY   #$05         
08CB:20 F8 2E       JSR   $2EF8         
08CE:C9 AA          CMP   #$AA         
08D0:D0 C9          BNE   $089B         
08D2:BD 8C C0       LDA   $C08C,X       
08D5:10 FB          BPL   $08D2         
08D7:C9 AA          CMP   #$AA         
08D9:D0 C0          BNE   $089B         
08DB:48             PHA                 
08DC:68             PLA                 
08DD:BD 8C C0       LDA   $C08C,X       
08E0:10 FB          BPL   $08DD         
08E2:C9 D5          CMP   #$D5         
08E4:D0 F7          BNE   $08DD         
08E6:EA             NOP                 
08E7:BD 8C C0       LDA   $C08C,X       
08EA:10 FB          BPL   $08E7         
08EC:C9 AA          CMP   #$AA         
08EE:D0 F2          BNE   $08E2         
08F0:EA             NOP                 
08F1:A0 00          LDY   #$00         
08F3:20 F8 2E       JSR   $2EF8         
08F6:A0 5B          LDY   #$5B         
08F8:BD 8C C0       LDA   $C08C,X       
08FB:10 FB          BPL   $08F8         
08FD:48             PHA                 
08FE:68             PLA                 
08FF:88             DEY                 
0900:D0 F6          BNE   $07F8         
0902:60             RTS                 


Volume management
Code:

----------- BEFORE:
0010:A0 03          LDY   #$03         
0012:B1 48          LDA   ($48),Y       ; get requested vol
0014:48             PHA                 ; save it
0015:A5 2F          LDA   $2F           ; get the read one
0017:A0 0E          LDY   #$0E         
0019:91 48          STA   ($48),Y       ; save it
001B:68             PLA                 
001C:F0 08          BEQ   $0026         ; if req = 0, skip
001E:C5 2F          CMP   $2F           
0020:F0 04          BEQ   $0026         ; if req = read, OK
0022:A9 20          LDA   #$20          ; vol err!!!
0024:D0 E1          BNE   $0007         
0026:A0 05          LDY   #$05         

----------- AFTER:
0010:A0 03          LDY   #$03         
0012:B1 48          LDA   ($48),Y       
0014:48             PHA                 
0015:24 2F          BIT   $2F           ; BIT it
0017:A0 0E          LDY   #$0E         
0019:91 48          STA   ($48),Y       
001B:68             PLA                 
001C:F0 08          BEQ   $0026         
001E:C5 2F          CMP   $2F           
0020:F0 04          BEQ   $0026         
0022:A9 20          LDA   #$20         
0024:D0 00          BNE   $0026         ; always OK
0026:A0 05          LDY   #$05         
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: 3055
Localisation: Le Chesnay, France

MessagePosté le: Dim 24 Avr 2016, 20:01    Sujet du message: Répondre en citant

HomeWord Speller, some code:

Code:

The protection lies at $8712 and is (was) called at $87C8. We replace the call to $8712 and read the value at $8721 instead. That value is 5 and is the number of protection read tries. It must not exceed 5 because the value is checked on return of the protection.

----------- DISASSEMBLY MODE -----------
0012:A9 00          LDA   #$00         
0014:8D 01 03       STA   $0301         
0017:8D A2 03       STA   $03A2         
001A:20 A9 B5       JSR   $B5A9         
001D:BD 89 C0       LDA   $C089,X   ; turn drive on
0020:A9 05          LDA   #$05      ; number of tries
0022:8D 00 BB       STA   $BB00     
0025:20 55 87       JSR   $8755     ; try protection
0028:10 01          BPL   $002B         
002A:EA             NOP             ; put for visibility
002B:C8             INY                 
002C:C0 30          CPY   #$30         
002E:5D 8C C0       EOR   $C08C,X       
0031:90 F8          BCC   $002B         
0033:BD 8C C0       LDA   $C08C,X       
0036:10 0A          BPL   $0042         
0038:C9 C9          CMP   #$C9         
003A:D0 0D          BNE   $0049         
003C:BD 88 C0       LDA   $C088,X   ; stop drive
003F:4C 51 87       JMP   $8751         
0042:EA             NOP                 
0043:EA             NOP                 
0044:BD 8C C0       LDA   $C08C,X       
0047:30 EF          BMI   $0038         
0049:CE 00 BB       DEC   $BB00     ; next try, please
004C:D0 D7          BNE   $0025         
004E:4C 3C 87       JMP   $873C         
0051:AD 00 BB       LDA   $BB00     ; return the value
0054:60             RTS                 
0055:A9 1C          LDA   #$1C      ; do the check
0057:8D 02 BB       STA   $BB02         
005A:BD 8E C0       LDA   $C08E,X       
005D:BD 8C C0       LDA   $C08C,X       
0060:10 FB          BPL   $005D         
0062:C9 D5          CMP   #$D5         
0064:EA             NOP                 
0065:EA             NOP                 
0066:F0 0F          BEQ   $0077         
0068:CE 01 BB       DEC   $BB01         
006B:D0 F0          BNE   $005D         
006D:CE 02 BB       DEC   $BB02         
0070:D0 EB          BNE   $005D         
0072:68             PLA                 
0073:68             PLA                 
0074:4C 49 87       JMP   $8749         
0077:BD 8C C0       LDA   $C08C,X       

The main call:

----------- DISASSEMBLY MODE -----------
00C5:20 95 89       JSR   $8995         
00C8:20 12 87       JSR   $8712    ; call the protection
00CB:D0 0B          BNE   $00D8    ; check return value
00CD:A9 00          LDA   #$00     ; 0 or >5
00CF:8D F4 03       STA   $03F4         
00D2:8D 81 C0       STA   $C081         
00D5:4C A6 FA       JMP   $FAA6    ; we reboot
00D8:C9 06          CMP   #$06         
00DA:B0 F1          BCS   $00CD         
00DC:A9 01          LDA   #$01     ; otherwise, we're good
00DE:8D A2 03       STA   $03A2         
00E1:A9 0F          LDA   #$0F         
00E3:8D A3 03       STA   $03A3         
00E6:A9 1D          LDA   #$1D         
00E8:8D A4 03       STA   $03A4         
00EB:A9 01          LDA   #$01         
00ED:8D A1 03       STA   $03A1         
00F0:8D 01 03       STA   $0301         
00F3:AD 04 03       LDA   $0304         
00F6:8D 25 02       STA   $0225         
00F9:20 A9 B5       JSR   $B5A9         
00FC:EE A4 03       INC   $03A4         
00FF:CE 00 00       DEC   $0000         


The DiskFixer view:

-------------- BEFORE:
TRACK $01/SECTOR $07/VOLUME $FE/BYTE $C8
----------------------------------------
$80: 48 68 BD 8C C0 10 FB C9    H(=.@P;I
$88: 96 D0 F1 A0 05 20 BA 87    .P1 E :.
$90: C9 AA D0 C9 BD 8C C0 10    I*PI=.@P
$98: FB C9 AA D0 C0 48 68 BD    ;I*P@H(=
$A0: 8C C0 10 FB C9 D5 D0 F7    .@P;IUP7
$A8: EA BD 8C C0 10 FB C9 AA    *=.@P;I*
$B0: D0 F2 EA A0 00 20 BA 87    P2* @ :.
$B8: A0 5B BD 8C C0 10 FB 48     [=.@P;H
$C0: 68 88 D0 F6 60 20 95 89    (.P6` ..
$C8:>20 12<87 D0 0B A9 00 8D     R.PK)@.
$D0: F4 03 8D 81 C0 4C A6 FA    4C..@L&:
$D8: C9 06 B0 F1 A9 01 8D A2    IF01)A."
$E0: 03 A9 0F 8D A3 03 A9 1D    C)O.#C)]
$E8: 8D A4 03 A9 01 8D A1 03    .$C)A.!C
$F0: 8D 01 03 AD 04 03 8D 25    .AC-DC.%
$F8: 02 20 A9 B5 EE A4 03 CE    B )5.$CN
----------------------------------------

-------------- AFTER:
TRACK $01/SECTOR $07/VOLUME $FE/BYTE $C8
----------------------------------------
$80: 48 68 BD 8C C0 10 FB C9    H(=.@P;I
$88: 96 D0 F1 A0 05 20 BA 87    .P1 E :.
$90: C9 AA D0 C9 BD 8C C0 10    I*PI=.@P
$98: FB C9 AA D0 C0 48 68 BD    ;I*P@H(=
$A0: 8C C0 10 FB C9 D5 D0 F7    .@P;IUP7
$A8: EA BD 8C C0 10 FB C9 AA    *=.@P;I*
$B0: D0 F2 EA A0 00 20 BA 87    P2* @ :.
$B8: A0 5B BD 8C C0 10 FB 48     [=.@P;H
$C0: 68 88 D0 F6 60 20 95 89    (.P6` ..
$C8:>AD 21<87 D0 0B A9 00 8D    -!.PK)@.
$D0: F4 03 8D 81 C0 4C A6 FA    4C..@L&:
$D8: C9 06 B0 F1 A9 01 8D A2    IF01)A."
$E0: 03 A9 0F 8D A3 03 A9 1D    C)O.#C)]
$E8: 8D A4 03 A9 01 8D A1 03    .$C)A.!C
$F0: 8D 01 03 AD 04 03 8D 25    .AC-DC.%
$F8: 02 20 A9 B5 EE A4 03 CE    B )5.$CN
----------------------------------------
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