Index du Forum
IDENTIFICATION SERVEUR : 51.83.8.59 - CLIENT : 18.232.51.247

 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 

Le Vampire Fou (Ciel Bleu, 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: 3020
Localisation: Le Chesnay, France

MessagePosté le: Mar 19 Juil 2011, 22:12    Sujet du message: Le Vampire Fou (Ciel Bleu, 1984) Répondre en citant

This is the first adventure game in French for the Apple II. Created by Jean-Louis Le Breton (who will found Froggy Software later on) and distributed by Ciel Bleu (former reseller of Computerre software).


PROTECTION TYPE
The program cannot be copied by the fast-disk backup option of Locksmith. It looks like it is a DOS 3.3 diskette, we have a prompt. Using the Edit mode of Copy II plus, it appears the final markers of both the header and data fields have been changed:
- D5 AA 96 / FF FF
- D5 AA AD / FF FF

As usual, values are HEX values


BOOT TRACE
- 9600<C600.C6FFM
- 96FB:20 DA FD AD E8 C0 60
- 9600G

Bingo! We have a normal DOS 3.3 boot 1 which loads at $800 but it does not indirectly jumps to $08FD (@ is $B700) but to $BBFE (@ is $BB00).

- 96FB:A9 4C 8D 4A 08 A9 59 8D 4B 08 A9 FF 8D 4C 08 4C 01 08
- 9600G

At $BB00, we have a great protection check routine. We will detail it later on. Let's see what the $B700 code does: it performs some inits, loads the DOS 3.3 then launches BONJOUR. No big deal there!


DISK COPY
- Launch Advanced Demuffin 1.4
- Press P to pass boot
- Insert the original in drive 1
- Insert a blank and formatted diskette in drive 2 (and leave it there)
- Copy from T0/S0 to T0/SA
- Reboot/relaunch Advanced Demuffin 1.4
- Insert the original in drive 1
- Press B to boot disk
- Copy from T0/SB to T22/SF


REMOVE THE PROTECTION
- Launch your favorite disk editor, mine is still DiskFixer 4
- T0/S0/4A: 6C FE BB -> 6C FD 08
- T0/S2/4B: AB -> FF
- T0/S2/9E: FF -> DE
- T0/S2/A3: FF -> AA
- T0/S2/A8: FF -> EB
- T0/S3/35: FF -> DE
- T0/S3/35: FF -> AA
- T0/S3/91: FF -> DE
- T0/S3/9B: FF -> AA
- T0/S4/69..7C: replace all code and put EA (NOP) there, which means put twenty NOP beginning at offset $69


Reboot and enjoy!

Antoine
7/2011

ps. Hello Jean-Louis & Thank you!
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: 3020
Localisation: Le Chesnay, France

MessagePosté le: Mar 19 Juil 2011, 22:12    Sujet du message: Répondre en citant

BEAUTIFUL DOS 3.3 DIRECTORY
There are some interesting hidden gems in the game, like its DOS 3.3 directory:

Code:

$12:$0F  BONJOUR                       
$09:$0C  PROTECTION                     
$1B:$0F  O R                           
$1C:$0F  I G                           
$1E:$0F  I N A                         
$1F:$0F  L                             
$20:$0F  C O                           
$0F:$0F  M M E                         
$08:$0F  S Y                           
$12:$0D  S T                           
$15:$0A  E M                           
$17:$09  E                             
$1C:$04  D E                           
$10:$0E  P R                           
$07:$03  E-E                           
$0E:$0E  O T                           
$15:$0F  CERC                           
$0C:$0F  C T                           
$08:$09  I                             
$07:$0A  O N                           
$17:$03  N '                           
$04:$0C  ES                             
$09:$06  T -                           
$14:$0A  C E                           
$1B:$06  P                             
$1E:$04  A -                           
$22:$09  S -                           
$0E:$0C  J' AI                         
$08:$02  EU                             
$06:$0E  DU MAL                         
$03:$08  A M'EN                         
$1A:$0B  S O R T I R                   
$18:$02  LABY                           
$21:$04  P1                             
$0F:$09  P2                             
$0E:$09  P3                             
$0C:$03  P4                             
$0A:$0C  P5                             
$09:$0A  P6                             
$05:$07  P7                             
$04:$06  P8                             
$03:$06  AR                             
$13:$0E  P9                             
$17:$0D  P10                           
$1D:$03  NEGA                           
$03:$0F  FIN.ANM                       
$0F:$01  TRY                           
$0B:$0C  VA                             
$0A:$04  MU                             
$04:$03  END                           
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: 3020
Localisation: Le Chesnay, France

MessagePosté le: Mar 19 Juil 2011, 22:17    Sujet du message: Répondre en citant

WHY WE NOP SOME CODE
This is the code we NOP on T0/S4. At offset $69, the code puts the changed values like the sync value and the $FF end markers one. At offset $7D, we restore (or set) the right DOS 3.3 values.

Code:

0069:A9 AB          LDA   #$AB         
006B:8D 4B B8       STA   $B84B         
006E:A9 FF          LDA   #$FF         
0070:20 DF BC       JSR   $BCDF         
0073:20 EC BC       JSR   $BCEC         
0076:A9 AA          LDA   #$AA         
0078:8D 29 BA       STA   $BA29         
007B:60             RTS                 
007C:60             RTS                 
007D:A9 FF          LDA   #$FF         
007F:8D 4B B8       STA   $B84B         
0082:A9 DE          LDA   #$DE         
0084:20 DF BC       JSR   $BCDF         
0087:A9 AA          LDA   #$AA         
0089:20 EC BC       JSR   $BCEC         
008C:A9 96          LDA   #$96         
008E:8D 29 BA       STA   $BA29         
0091:60             RTS                 
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: 3020
Localisation: Le Chesnay, France

MessagePosté le: Mar 19 Juil 2011, 22:41    Sujet du message: Répondre en citant

PROTECTION
This is one on-disk protection routine at $BB00. The first other one is the change of the sync marker from $FF to $AB and the second one is the change of end markers. Ah ah ah!

Code:

0000:A9 FF          LDA   #$FF         
0002:85 D6          STA   $D6           
0004:BD 8D C0       LDA   $C08D,X       
0007:A9 FF          LDA   #$FF         
0009:EA             NOP                 
000A:30 05          BMI   $0011         

* This code is skipped there

000C:A2 B1          LDX   #$B1         
000E:4C F0 BB       JMP   $BBF0         

* Check a ROM value

0011:AD FD FF       LDA   $FFFD         
0014:C9 FA          CMP   #$FA         
0016:F0 05          BEQ   $001D         
0018:A2 B2          LDX   #$B2         
001A:4C F0 BB       JMP   $BBF0         

* Start the protection
* We are looking for EB D5 AA

001D:BD 8C C0       LDA   $C08C,X       
0020:A9 00          LDA   #$00         
0022:8D 00 02       STA   $0200         
0025:BD 8C C0       LDA   $C08C,X       
0028:10 FB          BPL   $0025         
002A:C9 EB          CMP   #$EB         
002C:D0 F7          BNE   $0025         
002E:BD 8C C0       LDA   $C08C,X       
0031:10 FB          BPL   $002E         
0033:C9 D5          CMP   #$D5         
0035:D0 EE          BNE   $0025         
0037:BD 8C C0       LDA   $C08C,X       
003A:10 FB          BPL   $0037         
003C:C9 AA          CMP   #$AA         
003E:D0 E5          BNE   $0025         

* If we have EB D5 AA then
* Clear memory from $95FF..$0800

0040:A9 4C          LDA   #$4C         
0042:A0 00          LDY   #$00         
0044:99 00 95       STA   $9500,Y       
0047:88             DEY                 
0048:D0 FA          BNE   $0044         
004A:CE 46 BB       DEC   $BB46         
004D:AD 46 BB       LDA   $BB46         
0050:C9 07          CMP   #$07         
0052:D0 EC          BNE   $0040         

* Clear the world-famous $B942 SEC/CLC byte :-)
* And set sector of the RWTS to $A

0054:A9 18          LDA   #$18         
0056:8D 42 B9       STA   $B942         
0059:A9 0A          LDA   #$0A         
005B:8D ED B7       STA   $B7ED         
005E:D0 05          BNE   $0065         

0060:00             BRK                 
0061:00             BRK                 
0062:00             BRK                 
0063:00             BRK                 
0064:00             BRK                 

* Now, set the track to $00
* Buffer is $4000
* Command is $01 (read)

0065:A9 00          LDA   #$00         
0067:8D EC B7       STA   $B7EC         
006A:8D F0 B7       STA   $B7F0         
006D:A9 40          LDA   #$40         
006F:8D F1 B7       STA   $B7F1         
0072:A9 01          LDA   #$01         
0074:8D F4 B7       STA   $B7F4         
0077:8D F8 B7       STA   $B7F8         
007A:8D EA B7       STA   $B7EA         
007D:8E E9 B7       STX   $B7E9         
0080:8E F7 B7       STX   $B7F7         

* Very important, change the buffer where the nibbles are read
* It is now set to $6B00..$6C55 for both the data read routine ($B8DC) and the denibblize routine ($B8C2)

0083:A0 6C          LDY   #$6C         
0085:8C 10 B9       STY   $B910         
0088:8C CE B8       STY   $B8CE         
008B:8C D2 B8       STY   $B8D2         
008E:88             DEY                 
008F:8C 21 B9       STY   $B921         
0092:20 E7 BB       JSR   $BBE7         Read sector

* It reads and moves

0095:A0 55          LDY   #$55         
0097:B9 00 6C       LDA   $6C00,Y       
009A:99 00 5C       STA   $5C00,Y       
009D:88             DEY                 
009E:10 F7          BPL   $0097         

00A0:AD 02 6B       LDA   $6B02         Save first value
00A3:85 06          STA   $06           

00A5:20 E7 BB       JSR   $BBE7         Read sector again
00A8:AD 02 6B       LDA   $6B02         Save second value
00AB:85 07          STA   $07           

00AD:20 E7 BB       JSR   $BBE7         Read sector ter
00B0:AD 02 6B       LDA   $6B02         Save third value
00B3:85 08          STA   $08           

* Hum, there are two LDAs
* See the hidden 'I check the first nibbles read'
* Reboot if we have a value <> 0 in our buffer

00B5:A0 55          LDY   #$55         
00B7:B9 00 6C       LDA   $6C00,Y       
00BA:D9 00 5C       LDA   $5C00,Y       
00BD:D0 2F          BNE   $00EE         
00BF:88             DEY                 
00C0:10 F5          BPL   $00B7         

* Now compare the three values
* $6 <> $7 : OK
* $6 == $8 : RETRY

00C2:A5 06          LDA   $06           
00C4:C5 07          CMP   $07           
00C6:D0 04          BNE   $00CC         
00C8:C5 08          CMP   $08           
00CA:F0 17          BEQ   $00E3         

* If OK,
* Restore the right values
* And jumps to $B700

00CC:A9 38          LDA   #$38         
00CE:8D 42 B9       STA   $B942         
00D1:A0 BC          LDY   #$BC         
00D3:8C 10 B9       STY   $B910         
00D6:8C CE B8       STY   $B8CE         
00D9:8C D2 B8       STY   $B8D2         
00DC:88             DEY                 
00DD:8C 21 B9       STY   $B921         
00E0:4C 00 B7       JMP   $B700         

* Otherwise, retry

00E3:4C 54 BB       JMP   $BB54         
00E6:09             @@@                 

* Read the sector

00E7:A9 B7          LDA   #$B7                 
00E9:A0 E8          LDY   #$E8         
00EB:4C B5 B7       JMP   $B7B5         

* Error, prepare reboot

00EE:A2 B3          LDX   #$B3         
00F0:20 58 FC       JSR   $FC58         
00F3:20 2D FF       JSR   $FF2D         
00F6:8E 03 04       STX   $0403         
00F9:4C 5B B7       JMP   $B75B         
00FC:60             RTS                 
00FD:02             @@@                 

* The entry point: $BB00

00FE:00             BRK                 
00FF:BB             @@@                 
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: 3020
Localisation: Le Chesnay, France

MessagePosté le: Jeu 21 Juil 2011, 21:34    Sujet du message: Répondre en citant

MISE A JOUR
L'auteur du logiciel m'a fait remarquer que ma première version déplombée ne fonctionnait pas avec AppleWin 1.2. J'ai vérifié et cela plante à l'exécution du binaire PROTECTION.

C'est surprenant, sur mon vrai IIgs ROM 3 et sur Sweet16, le soft se lance sans aucun problème.

J'ai donc modifié mon crack dont vous trouverez la version mise à jour sur http://www.brutaldeluxe.fr/crack/

1- Booter une disquette DOS 3.3
2- Remplacer la disquette par celle du Vampire Fou
3- Taper les commandes suivantes :

UNLOCK BONJOUR
LOAD BONJOUR
10
SAVE BONJOUR
LOCK BONJOUR

^^ Je supprime la ligne 10 qui faisait un "BRUN PROTECTION"

4- Reboot & Enjoy v2

Antoine
7/2011
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