Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - 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 

AgDisk Farm Management (Harris Technical Systems, 1981)

 
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: Sam 31 Oct 2015, 21:25    Sujet du message: AgDisk Farm Management (Harris Technical Systems, 1981) Répondre en citant

This is a series of disks for farmers. I was sent one of the series for Corn/Soybean management. The objective is to find how to crack the other volumes remotely (ie. w/o having them in my disk drives)

Disk format
This is a Pascal disk that can be copied with Locksmith Fast Disk Backup. We do, we reboot and we get an error message: "ERROR ERROR - PLEASE READ THE LICENSE..." and a siren coming from the speaker. Not good or not!

Finding the protection
The disk can be copied but does not run despite it boots. That means there is a nibble check or nibble count on a track.
It is a Pascal disk (confirmed with Disk Fixer), I've never seen a Pascal disk with an extra track tough I cannot guarantee its non-existence. As I was sent a copy of the original, there is no data on track $23.

The error display message routine also plays a siren beep (it is annoying) so we'll search for the pattern $C030 on the disk:
- Launch Disk Fixer
- Insert the original in drive 1
- (F)ind (H)ex 30C0
You'll get the entries on track 1 and two on track 1B

We'll also search for the ERROR pattern on the disk:
- Launch Disk Fixer
- Insert the original in drive 1
- (F)ind (A)scii ERROR
We have no data returned. That means that the chars are either protected or with bit 7 off, let's launch a hex search
- (F)ind (H)ex 455252 (other ASCII codes for ERR)
You'll get data on track 4, D, 11, plenty of 1F and 20. As the ERROR text is displayed several times, we guess the protection routine is close to tracks 1F/20

We'll also search for the $C08C or $C0EC pattern, the one that reads nibbles from the disk drive. Pascal assumes the drive is always on slot 6 meaning that are Read/Write routines are with the $C0EC pattern.
- Launch Disk Fixer
- Insert the original in drive 1
- (F)ind (H)ex ECC0
You'll get answers on track 20 (sector 0) for side 1 and tracks 17 and 22 for side 2 (did I say there were two sides?)

OK. It is time to conclude by saying that the protection check is on track 20 with text displayed from track 1F, so we'll not use the $C030 research.

Let's analyze the routine from track 20, sector 0 in the next thread...

LoGo
10/2015


Derničre édition par toinet le Dim 08 Nov 2015, 10:40; édité 2 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: Sam 31 Oct 2015, 21:36    Sujet du message: Répondre en citant

This is the code of track 20, sector 0 where the protection check lies:

Code:

*--- Entry code
00AA:68             PLA                 
00AB:85 00          STA   $00           
00AD:68             PLA                 
00AE:85 01          STA   $01           
00B0:68             PLA                 
00B1:68             PLA                 
00B2:68             PLA                 
00B3:68             PLA                 
00B4:8D E9 C0       STA   $C0E9         Turn drive on
00B7:A0 51          LDY   #$51          Give some tries
00B9:CA             DEX                 
00BA:D0 04          BNE   $00C0         
00BC:88             DEY                 
00BD:98             TYA                 
00BE:F0 27          BEQ   $00E7         No more tries, the end
00C0:AD EC C0       LDA   $C0EC         Read a nibble
00C3:10 FB          BPL   $00C0         
00C5:C9 C9          CMP   #$C9          C9 ?
00C7:D0 F0          BNE   $00B9         
00C9:48             PHA                 Lose some time
00CA:68             PLA                 
00CB:AD EC C0       LDA   $C0EC         
00CE:C9 08          CMP   #$08          To annoy our controller
00CA:68             PLA                 
00CB:AD EC C0       LDA   $C0EC         
00CE:C9 08          CMP   #$08         
00D0:B0 E7          BCS   $00B9         
00D2:AD EC C0       LDA   $C0EC         
00D5:10 FB          BPL   $00D2         
00D7:C9 FE          CMP   #$FE          Did I find the hidden FE?
00D9:D0 DE          BNE   $00B9         
00DB:EA             NOP                 
00DC:AD EC C0       LDA   $C0EC         
00DF:10 FB          BPL   $00DC         
00E1:C9 FF          CMP   #$FF          And a final FF?
00E3:D0 D4          BNE   $00B9         
*--- We have an original disk
00E5:A9 FF          LDA   #$FF          If so, return with FF
*--- This is where we arrive when no more tries remain (we have a copy)
00E7:CD E8 C0       CMP   $C0E8         Or with a different value
00EA:48             PHA                 We push the return value
00EB:48             PHA                 Twice
00EC:A5 01          LDA   $01           
00EE:48             PHA                 
00EF:A5 00          LDA   $00           
00F1:48             PHA                 
00F2:A2 48          LDX   #$48          And clear some data
00F4:A9 00          LDA   #$00         
00F1:48             PHA                 
00F2:A2 48          LDX   #$48         
00F4:A9 00          LDA   #$00         
00F6:9D 00 00       STA   $0000,X       
00F9:CA             DEX                 
00FA:10 FA          BPL   $00F6         
00FC:60             RTS                 


If the protection routine finds the right sequence, it returns with #$FF (= original), otherwise, it returns with another value (= copy).

We know we will never have the same pattern of nibbles on a copy, even less on a disk image, we'll then fake the routine and tell it to return with #$FF always!

The original code jumps to *+$27 if there are no more tries
Code:

00B9:CA             DEX                 
00BA:D0 04          BNE   $00C0         
00BC:88             DEY                 
00BD:98             TYA                 
00BE:F0 27          BEQ   $00E7         No more tries, the end


Tell it to jump to *+$25 where we put a #$FF in the accumulator, meaning that we have an original disk:
Code:

00B9:CA             DEX                 
00BA:D0 04          BNE   $00C0         
00BC:88             DEY                 
00BD:98             TYA                 
00BE:F0 25          BEQ   $00E5         Go where we set #$FF


On side 1, with Disk Fixer:
- Read track 20, sector 0, offset BF, change from 27 to 25
- Save the sector back to disk

On side 2, with Disk Fixer:
- Track 17, sector F, offset A1, change from 27 to 25
- Track 22, sector C, offset A1, change from 27 to 25

Reboot and... enjoy,
LoGo
10/2015
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: Sam 31 Oct 2015, 21:43    Sujet du message: Répondre en citant

The original request from the owner of the disks to crack the other volumes of the series on his own.

We cannot guarantee but suspect that we'll always get the same protection check on all programs.

The process is:
- Make a copy of your disks then work from the copies
- Launch Disk Fixer
- (F)ind the (H)ex pattern 51 CA D0 04 88 98 F0 27
- and replace with 51 CA D0 04 88 98 F0 25
- (S)ave the sector back to disk each time you encounter the pattern

The pattern is the one described in the previous messages, the is the main loop of the protection, we just change the relative jump address if the protection check routines fails!

Thank you, BB!
Disks are available @ http://www.brutaldeluxe.fr/crack/ (beware, side 2 had 10 bad blocks)
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, 19:07    Sujet du message: Répondre en citant

UPDATE UPDATE

Machinery management 1
T1B/S0C, offset 9F: 27 -> 25

Save the sector back to disk and... enjoy,
LoGo
11/2015
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: Dim 08 Nov 2015, 10:37    Sujet du message: Répondre en citant

Update update!!

Code:

SEARCH FOR 88 98 F0 27
REPLACE WITH 88 98 F0 25


AGDISK CROP LIVESTOCK PROFIT PROJECTOR
17/0F/9E
22/0C/9E

AGDISK CROP RECORD KEEPING DATA
NO PROTECTION
ONLY DATA

AGDISK CROP RECORD KEEPING ENTRY
NO PROTECTION
ONLY DATA

AGDISK CROP RECORD KEEPING MASTER
D/5/98

AGDISK CROP RECORD KEEPING REPORT
NO PROTECTION
ONLY DATA

AGDISK ENTERPRISE ANALYSIS
12/D/AE

AGDISK FARM ACCOUNTING EXPENSE DATA DISK
NO PROTECTION
ONLY DATA

AGDISK FARM ACCOUNTING LEDGER DATA DISK
NO PROTECTION
ONLY DATA

AGDISK FARM ACCOUNTING MASTER
12/08/90
13/01/B4

AGDISK FINANCIAL MANAGEMENT
0F/0E/FC

AGDISK MARKET CHARTING
E/2/60

AGDISK SWINE MANAGEMENT
22/0/88
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