Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.65 - CLIENT : 54.235.48.106

 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 

Free enterprise (SRA, 1982)

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

MessagePosté le: Mar 03 Nov 2015, 20:09    Sujet du message: Free enterprise (SRA, 1982) Répondre en citant

Free Enterprise by Science Research Associates is a game I've never heard of. Thanks to BB, this simulation game is now cracked and saved from Oblivion Smile

For more information, refer to https://books.google.com/books?id=q8fwTt09_MEC&pg=RA1-PA267&lpg=RA1-PA267&dq=FREE+ENTERPRISE+APPLE+II&source=bl&ots=MhPtXgPfh3&sig=QW-XVN0JEQW4V7P4xM9Ku-Eu0D4&hl=en&sa=X&ved=0CB0Q6AEwAGoVChMIgof38KTzyAIVTuNjCh06Owfg#v=onepage&q=FREE%20ENTERPRISE%20APPLE%20II&f=false

Protection type
The disk is in DOS 3.3 (slightly modified to prevent Ciderpress from reading its contents Wink) but the disk is copyable.
The disk contains some hidden nibbles that are read in the protection check routine. If it fails to find the hidden nibbles, the program reboots.

Boot trace
We boot. The DOS prompt is displayed. One file is loaded and then it reboots and reboots and reboots.
So, we understand the protection check is in the first steps of game loading. What do we see here:
- Boot program is the BASIC program TEMP2
- It loads CHARACTER GENERATOR (a binary file at $1300)
- Call the routine at $1300
- Then loads CHARACTER TABLE
- Then runs the BASIC program FACTORY4

How to remove the protection
We simulate the same boot process. We BLOAD CHARACTER GENERATOR and CALL -151 to enter the monitor and then, list the code. Gotcha! There are obfuscated code here with extra opcodes to make it difficult to read.
This is the nibble check routine. If it goes bad, it reboots (JMP $C600). If it goes well, it decodes the data at $1400..$14FF and then, it just returns (RTS).
We will just change some bytes in the code to let values be initialized (maybe there are used later) and change the CALL address of TEMP2, the boot program.

So, boot my cracking disk
- Launch Disk Fixer
- Insert the Free Enterprise disk in drive 2
- (S)et slot 6 & drive 2
- (D)irectory the Free Enterprise disk
- Follow the CHARACTER GENERATOR program
- At offset $70, enter EA A9 AA
- Save the sector back to disk.
Now, reboot my cracking disk
- Press 9 to boot into DOS 3.3
- CATALOG,D2
- LOAD TEMP2
- 4 REM CALL 4864
- 5 CALL 4973
- SAVE TEMP2

4864 is the decimal address of $1300 in hex.
4973 is the decimal address of $136D in hex. The address of our patch to the protection. This is a way to skip it but set the right values in the zero page.


Thank you, BB!

Reboot and... enjoy,

LoGo
11/2015


Dernière édition par toinet le Mar 03 Nov 2015, 20:17; édité 1 fois
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: 2949
Localisation: Le Chesnay, France

MessagePosté le: Mar 03 Nov 2015, 20:10    Sujet du message: Répondre en citant

This is the decyphered CHARACTER GENERATOR code at $1300. See my changes at $136D, the new entry address of the protection routine.

Code:
*
* Free Enterprise
* (c) Science Research Associates, 1982
* (k) LoGo, 2015
*

         org   $1300
         mx    %11
         lst   off

* Thank you, BB!

SOFTEV   EQU   $03F2

*---

L1300    LDA   #$00
         PHA
         PLP
         BNE   L1307
         DB    $4C
L1307    JSR   $03E3      ; get IOB
         STA   $01
         STY   $00
         LDY   #$01       ; counter
         BNE   L1313
         DB    $D0
L1313    LDA   ($00),Y
         TAX
         BNE   L1319
         DB    $D0
L1319    LDA   $C089,X    ; turn drive on
         LDA   #$56       ; number of tries
         STA   $00
         BNE   L1323
         DB    $D0
L1323    DEY              ; our counter--
         BNE   L1332
         BEQ   L1329      ; first pass, here
         DB    $D0
L1329    DEC   $00        ; tries--
         BNE   L1332

         LDA   #$00       ; no more tries, exit
         BEQ   L136C
         DB    $D0

L1332    LDA   $C08C,X    ; look for
         BPL   L1332
         BNE   L133A
         DB    $D0
L133A    CMP   #$BF       ; #$BF
         BEQ   L1341
         BNE   L1323
         DB    $4C
L1341    BEQ   L1344
         DB    $D0
L1344    LDA   $C08C,X
         CMP   #$08       ; #$08
         BCS   L1323
         BNE   L134E
         DB    $D0
L134E    LDA   $C08C,X
         BPL   L134E
         BNE   L1356
         DB    $D0
L1356    CMP   #$D5       ; #$D5
         BEQ   L135D
         BNE   L1323
         DB    $D0
L135D    LDA   $C08C,X
         BPL   L135D
         BNE   L1365
         DB    $D0
L1365    CMP   #$AA       ; #$AA
         BEQ   L136C
         BNE   L1323
         DB    $D0

* We will patch the following line and enter
* instead. We will CALL that line
L136C    CMP   $C088,X    ; turn drive off

* Here is the code we will enter instead
* In hex, this is EA A9 AA
         NOP
         LDA   #$AA

* And we'll come back at...
         TAY              ; last nibble read
         BNE   L1374
         BEQ   L1374

* The following zero page entry may be checked later
* So, we decide to init it

L1374    LDA   #$FF       ; no listing
         STA   $D6        ; we patched because of that

         LDA   #$00       ; reset vector
         STA   SOFTEV     ; ahem to $C000
         LDA   #$C0
         STA   SOFTEV+1

         CPY   #$AA       ; nibble is AA?
         BEQ   L1389
         JMP   $C600      ; copy, reboot

L1389    LDY   #$00       ; decypher $1400..$14FF
L138B    LDA   #$FF
         EOR   L1400,Y
         STA   L1400,Y
         INY
         BNE   L138B
         RTS              ; return

         HEX   D4C5D2D38DBAA0C6CFD2CDC1D48DBAA0
         HEX   CFD6C5D2C6CCCFD78DBAA0CDC5CDCFD2
         HEX   D9A0C6D5CCCC8DBAA0D2C1CEC7C58DC2
         HEX   D9D4C5D320D5D3C5C48DC2D9D4C5D320
         HEX   CCC5C6D48DC1CCCCA0CFD2A0D3CFCDC5
         HEX   A0A8C1AFD3A9BF8DD5D0C4C1D4C5A0D3
         HEX   CFD5D2C3C5A0A8D9AF

L1400    HEX   B7DFA70079B14542FFFE7AC856C37AC9
         HEX   59B172A83F72AD3F72AA3F5A1936BF0F
         HEX   FA56DF72AB3F7231FC72AF3F56FF7232
         HEX   FC56807230FC56977233FC97B77BB136
         HEX   720FD236732FD45FFF7BD55231FC7AD4
         HEX   5232FC36000FFE676ED5372F0419D45A
         HEX   D4C71231FC36DF2F187BDB7BDAE76F93
         HEX   0F935ADAB5D6FCF231FC7AD45ADA95F7
         HEX   F5D6E77AD5F5F5FAD5F5D795E79ADB7A
         HEX   D597D230FCB75233FCB5B5B57AD897B7
         HEX   D5D9D8D5D9D8D5D9D8D6077AD95FFF4E
         HEX   D97BB05FFFB75232FC0FF936000FFD4E
         HEX   D56ED597AED56ED55BB05AD4E796FB7A
         HEX   D4373FF72F2619DB5ADB3ADE6FEF5ADF
         HEX   7ADB19DA5ADA3ADC6FFB5ADD7ADA5BB1
         HEX   979F0000000000000000000000000000
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: 2949
Localisation: Le Chesnay, France

MessagePosté le: Mar 03 Nov 2015, 20:12    Sujet du message: Répondre en citant

And this is the original TEMP2 BASIC program
Code:

 1  REM  THIS IS NEW TEMP2             
 2 D$ =  CHR$ (4)                       
 3  PRINT D$;"BLOAD CHARACTER GEN       
     ERATOR"                           
 4  CALL 4864
 10  HOME                               
 20  PRINT D$;"BLOAD CHARACTER TA       
     BLE"                               
 30  POKE 103,1: POKE 104,64: POKE     
     16384,0                           
 40  PRINT D$;"RUN FACTORY4"           


And the updated one:
Code:

 1  REM  THIS IS NEW TEMP2             
 2 D$ =  CHR$ (4)                       
 3  PRINT D$;"BLOAD CHARACTER GEN       
     ERATOR"                           
 4  REM  CALL 4864 LOGO WAS HERE       
     11/2015                           
 5  CALL 4973                           
 10  HOME                               
 20  PRINT D$;"BLOAD CHARACTER TA       
     BLE"                               
 30  POKE 103,1: POKE 104,64: POKE     
     16384,0                           
 40  PRINT D$;"RUN FACTORY4"           
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