Index du Forum
IDENTIFICATION SERVEUR : 10.14.20.57 - CLIENT : 3.236.222.124

 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 

Apple Writer II VF (1982, Apple Computer)

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

MessagePosté le: Ven 26 Fév 2021, 18:01    Sujet du message: Apple Writer II VF (1982, Apple Computer) Répondre en citant

#1041 - The well known word processing program by Paul Lutus. In French.

Disk structure
That is a standard DOS 3.3 disk with no extra track. The disk is fully readable.

Protection type
This is funny one. You can copy the disk but it will not boot past a certain point. But why? We'll discover the role of the volume value today.

How to copy
Use Locksmith Fast Disk Backup to copy your original disk. Then store it in a dry and safe place.

How to crack
Let's crack it together...
Code:

When you boot your copy, you end at the BASIC prompt.
When such things happen, a short routine is placed in the firt RAM pages, so we CALL-151 and browse from 0L.
We end up by finding the following routine:

020A-   A0 00       LDY   #$00      ; clear RAM
020C-   84 00       STY   $00
020E-   98          TYA
020F-   91 00       STA   ($00),Y
0211-   C8          INY
0212-   D0 FB       BNE   $020F
0214-   E6 01       INC   $01
0216-   F0 0C       BEQ   $0224
0218-   A6 01       LDX   $01
021A-   E0 C0       CPX   #$C0
021C-   D0 F1       BNE   $020F
021E-   A2 D0       LDX   #$D0
0220-   86 01       STX   $01
0222-   D0 EB       BNE   $020F
0224-   AD 82 C0    LDA   $C082      ; come back to main RAM
0227-   AD 82 C0    LDA   $C082
022A-   8D 0C C0    STA   $C00C
022D-   20 84 FE    JSR   $FE84      ; all standard I/O vectors
0230-   20 2F FB    JSR   $FB2F
0233-   20 93 FE    JSR   $FE93
0236-   20 89 FE    JSR   $FE89
0239-   20 58 FC    JSR   $FC58
023C-   4C 00 E0    JMP   $E000      ; jmp to BASIC

Now, we believe a 4C 00 02 (JMP $0200) is performed somewhere in RAM (but it is cleared), so we search the 4C 00 02 pattern on disk and we find it at T06/S0E/D1...

----------- DISASSEMBLY MODE -----------
00AD:20 FF 49       JSR   $49FF         ; DOS 3.3 sector
00B0:C8             INY                 ; address is at -4
00B1:C9 BF          CMP   #$BF         
00B3:D0 F5          BNE   $00AA         
00B5:20 E3 24       JSR   $24E3         
00B8:AD 00 02       LDA   $0200         
00BB:20 2C 39       JSR   $392C         ; check a key
00BE:C9 CF          CMP   #$CF         
00C0:F0 01          BEQ   $00C3         ; call protection
00C2:60             RTS                 
00C3:20 FD 49       JSR   $49FD         ; do something, we're at $2CBF
00C6:A0 60          LDY   #$60          ; move clear code
00C8:B9 D0 2C       LDA   $2CD0,Y       ; $2CD0 is shown at $D4 here
00CB:99 00 02       STA   $0200,Y       
00CE:88             DEY                 
00CF:10 F7          BPL   $00C8         
00D1:4C 00 02       JMP   $0200         ; and execute it
00D4:AD 83 C0       LDA   $C083         ; the clear code
00D7:AD 83 C0       LDA   $C083         
00DA:A9 03          LDA   #$03         
00DC:85 01          STA   $01           
00DE:A0 00          LDY   #$00         
00E0:84 00          STY   $00           

Let's find the parent file with the Track/Sector map of Copy II Plus... File is OBJ.APWRTF2F

So, who's calling $2CBF apart from above?
There is one routine at T7/SF/8, address in RAM is $3B00

00/3AD6: 20 64 48     JSR 4864          ; get rwts
00/3AD9: A9 01        LDA #01           
00/3ADB: 8D EC 02     STA 02EC          ; read command
00/3ADE: A0 E0        LDY #E0           
00/3AE0: A9 02        LDA #02           
00/3AE2: 20 D9 03     JSR 03D9         
00/3AE5: AD E1 02     LDA 02E1          ; drive
00/3AE8: 4A           LSR               
00/3AE9: 4A           LSR               
00/3AEA: 4A           LSR               
00/3AEB: 4A           LSR               
00/3AEC: 09 B0        ORA #B0           
00/3AEE: 8D F8 4F     STA 4FF8         
00/3AF1: 20 08 3B     JSR 3B08          ; make a byte from 2 4*4 nibbles
00/3AF4: 85 82        STA 82            ; save it
00/3AF6: 20 08 3B     JSR 3B08          ; read next
00/3AF9: C5 82        CMP 82            ; compare it
00/3AFB: D0 0A        BNE 3B07 ;+0A=    ; different, we're good
00/3AFD: 20 08 3B     JSR 3B08          ; read again
00/3B00: C5 82        CMP 82            ; compare it
00/3B02: D0 03        BNE 3B07 ;+03=    ; different, we're good
00/3B04: 4C BF 2C     JMP 2CBF          ; same volume... a copy...
00/3B07: 60           RTS               ; exit, we're good
00/3B08: AE E1 02     LDX 02E1          ; get slot*16
00/3B0B: BD 8C C0     LDA C08C,X       
00/3B0E: 10 FB        BPL 3B0B ;-05=   
00/3B10: C9 D5        CMP #D5           ; read D5AA96
00/3B12: D0 F4        BNE 3B08 ;-0C=   
00/3B14: EA           NOP               
00/3B15: BD 8C C0     LDA C08C,X       
00/3B18: 10 FB        BPL 3B15 ;-05=   
00/3B1A: C9 AA        CMP #AA           
00/3B1C: D0 F2        BNE 3B10 ;-0E=   
00/3B1E: EA           NOP               
00/3B1F: BD 8C C0     LDA C08C,X       
00/3B22: 10 FB        BPL 3B1F ;-05=   
00/3B24: C9 96        CMP #96           
00/3B26: D0 E8        BNE 3B10 ;-18=   
00/3B28: EA           NOP               
00/3B29: EA           NOP               
00/3B2A: BD 8C C0     LDA C08C,X        ; and the two 4*4 nibbles
00/3B2D: 10 FB        BPL 3B2A ;-05=    ; (the volume one)
00/3B2F: 2A           ROL               
00/3B30: 85 80        STA 80           
00/3B32: BD 8C C0     LDA C08C,X       
00/3B35: 10 FB        BPL 3B32 ;-05=   
00/3B37: 25 80        AND 80           
00/3B39: 60           RTS               ; and return it

Who's calling?

00/2327: E9 01        SBC #01           
00/2329: 8D 19 34     STA 3419         
00/232C: 18           CLC               
00/232D: 69 0D        ADC #0D           
00/232F: 8D 04 48     STA 4804         
00/2332: 8D 4B 48     STA 484B         
00/2335: 69 01        ADC #01           
00/2337: 8D 48 48     STA 4848         
00/233A: 8D 12 48     STA 4812         
00/233D: 20 D6 3A     JSR 3AD6          ; check volume
00/2340: 20 C1 26     JSR 26C1         
00/2343: 20 C0 24     JSR 24C0         
00/2346: A9 20        LDA #20           
00/2348: 85 B5        STA B5           
00/234A: 20 42 24     JSR 2442         
00/234D: 20 17 2F     JSR 2F17         
00/2350: AD 83 C0     LDA C083         
00/2353: AD 83 C0     LDA C083         
00/2356: A2 FF        LDX #FF           
00/2358: 9A           TXS               

What did we find?
The protection consists in reading three prolog address fields, read the volume value each time, and compare it.
If they are different, we have an original disk. If it is similar, we have a copy.
That's clever ;-)


How to crack?
Boot my copy disk, launch Disk Fixer
And, then, two options:
- skip the entire call
- skip the check only
I will skip the check only. Why?
Because, the drive is stored at $4FF8, so it is useful to run the beginning of the routine.

Code:

We "D"irectory the diskette, we select OBJ.APWRTF2F.
At file sector offset $17, and at sector offset $F5: 20 -> 60

-------------- DISK EDIT ---------------
TRACK $06/SECTOR $00/VOLUME $FE/BYTE $F5
----------------------------------------
$80: 03 20 B4 3A A9 28 38 E5    C 4:)(8%
$88: 01 A8 20 BB 3A A9 34 38    A( ;:)48
$90: E5 01 A8 A2 00 BD 80 02    %A("@=.B
$98: F0 14 C9 8D F0 10 24 B3    0TI.0P$3
$A0: 70 03 20 2C 39 20 CC 3A    0C ,9 L:
$A8: C8 E8 E0 17 90 E7 A9 A0    H(`W.')
$B0: 20 CC 3A C8 C4 B6 90 F8     L:HD6.8
$B8: C6 C8 E6 25 4C B2 26 A2    FH&%L2&"
$C0: 04 BD F0 16 D0 02 A9 A0    D=0VPB)
$C8: 20 CC 3A C8 CA 10 F2 60     L:HJP2`
$D0: 29 7F 84 C5 20 DE 25 A4    )?.E ^%$
$D8: C5 60 20 64 48 A9 01 8D    E` $H)A.
$E0: EC 02 A0 E0 A9 02 20 D9    ,B `)B Y
$E8: 03 AD E1 02 4A 4A 4A 4A    C-!BJJJJ
$F0: 09 B0 8D F8 4F-20-08 3B    I0.8O H;
$F8: 85 82 20 08 3B C5 82 D0    .. H;E.P
----------------------------------------
BUFFER 0/SLOT 6/DRIVE 2/MASK OFF/NORMAL
DOS3.3:OBJ.APWRTF2F                 /$17
----------------------------------------

A funny protection: the volume change on each sector

----------------------------------------
TRACK $06/SECTOR $00/VOLUME $3B/BYTE $00
----------------------------------------
$00: CE 3A C8 C4 B6 D0 F5 4C    N:HD6PuL
$08: B4 3A C8 A9 A0 20 CC 3A    4:H)  L:
$10: C8 A9 D6 24 D0 10 03 20    H)V$PPC
$18: CC 3A A9 D2 24 F5 10 03    L:)R$uPC
$20: 20 CC 3A C8 A5 F4 20 CC     L:H%t L
$28: 3A C8 24 E1 10 05 A9 DA    :H$aPE)Z
$30: 20 CC 3A 38 A5 86 E5 84     L:8%.e.
$38: AA 85 9A A5 87 E5 85 85    *..%.e..
$40: 9B 20 51 49 A0 0A 20 BB    . QI J ;
$48: 3A 38 A5 A6 E9 02 AA A5    :8%&iB*%
$50: A7 E5 B2 48 8A 38 E5 9A    'e2H.8e.
$58: AA 68 E5 9B 20 51 49 A0    *(e. QI
$60: 14 20 BB 3A 18 A5 84 E9    T ;:X%.i
$68: 00 AA A5 85 E5 B2 20 51    @*%.e2 Q
$70: 49 A0 1E 20 BB 3A A6 96    I ^ ;:&.
$78: A5 97 20 51 49 24 B3 30    %. QI$30
----------------------------------------
TRACK $06/SECTOR $01/VOLUME $88/BYTE $00
----------------------------------------
$00: 03 4C 9D 27 4C CA 27 24    CL.'LJ'$
$08: DF 30 0F 20 ED 32 A0 00    _0O m2 @
$10: B1 80 20 FF 49 C8 C9 BF    1. IHI?
$18: D0 F6 20 E3 24 AD 00 02    Pv c$-@B
$20: A0 00 20 2C 39 C9 CF D0     @ ,9IOP
$28: 06 20 96 30 8C 80 02 60    F .0..B
$30: C9 E0 90 02 E9 20 60 24    I`.Bi  $
$38: DF 10 03 20 B3 41 C6 AD    _PC 3AF-
$40: 20 AC 24 A9 FF 60 C6 E8     ,$) Fh
$48: 24 C4 30 04 A9 C0 85 C4    $D0D)@.D
$50: A5 C4 49 40 85 C4 60 A5    %DI@.D %
$58: CF 49 FF 85 CF 60 A5 F5    OI.O %u
$60: 49 FF 85 F5 60 A9 00 85    I.u )@.
$68: 80 A5 85 85 81 A4 84 98    .%...$..
$70: D0 02 C6 81 88 20 4D 01    PBF.. MA
$78: 09 80 C9 FF F0 04 C9 8D    I.IpDI.
----------------------------------------
TRACK $06/SECTOR $02/VOLUME $A4/BYTE $00
----------------------------------------
$00: 27 4C 03 38 20 9D 27 C9    'LC8 .'I
$08: FF D0 90 24 E2 10 03 4C    P.$bPCL
$10: E2 38 24 DF 10 72 24 AD    b8$_P2$-
$18: 10 6E 4C E3 24 A2 00 86    P.Lc$"@.
$20: AD 84 D3 A0 00 A5 A3 F0    -.S @%#p
$28: 11 24 E2 10 0D 20 87 38    Q$bPM .8
$30: C9 FF F0 03 4C 97 37 4C    IpCL.7L
$38: E2 38 A5 A3 20 5E 38 C9    b8%# ^8I
$40: 0F F0 06 C9 0D F0 B1 D0    OpFIMp1P
$48: C2 A6 A3 D0 02 F0 A9 20    B&#PBp)
$50: 87 38 A9 00 20 5E 38 C9    .8)@ ^8I
$58: 0F F0 04 C9 0D D0 AC 4C    OpDIMP,L
$60: 97 37 85 02 20 5F 3C 24    .7.B _<$
$68: DF 30 18 20 ED 32 A0 00    _0X m2 @
$70: B9 26 4E F0 0E C9 AF D0    9&NpNI/P
$78: 04 A6 02 F0 06 20 FF 49    D&BpF I
----------------------------------------


The disk image is available at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,

LoGo
2/2021
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
aloysiuscoincoin



Inscrit le: 17 Mar 2018
Messages: 24

MessagePosté le: Ven 26 Fév 2021, 20:02    Sujet du message: Répondre en citant

Very Happy
Nice and discrete little trick. Cool
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
toinet
Site Admin


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

MessagePosté le: Sam 27 Fév 2021, 17:23    Sujet du message: Répondre en citant

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