- CATALOG TRICKS 2.0 -
Tom et Jerry/GPA 2005-2006
Ce programme est une boite a outils permettant de triturer le catalogue et
les en-tetes de fichiers d'une disquette DATA ou VENDOR. Si son utilite ne
vous saute pas aux yeux au premier abord, il pourra le moment venu vous
simplifier un peu la vie...
L'utilisation de l'interface du logiciel etant tres simplifiee, il n'en
sera pas fait mention dans cette notice.
Attention ! Cet utilitaire bricole a la va-vite lors de la finition de
Citadelle n'a pas fait l'objet de tests approfondis. Travaillez toujours
sur une copie...
Que peut-on faire avec Catalog Tricks 2.0 ?
-------------------------------------------
* Appliquer une protection contre la visualisation du catalogue
Cette technique assez sommaire s'appuie sur le fait que la routine
d'affichage du catalogue ne prend pas en consideration les valeurs
superieures a 127. Donc, on ne voit plus rien a l'affichage ! Et avec un
editeur de secteurs, le catalogue est difficilement lisible
(sauf avec Discology).
Les plus anciens se souviendront qu'une telle (petite) astuce a ete
utilisee sur les premiers disquettes protegees par des SPEEDLOCK.
Au passage, cela permet de rendre ces catalogues "visibles" :-).
Cette "protection" peut etre appliquee sur un catalogue graphique,
fait par exemple avec Cataclysme (pub !).
* Nettoyer les en-tetes des fichiers
Si vous avez gentiment planque votre catalogue, c'est quand meme rageant
de voir que n'importe quel fana de l'editeur de secteur peut retrouver
vos fichiers. Le Header Crusher permet de "nettoyer" les en-tetes des
fichiers en remplacant toutes les donnees non vitales par des zeros ou
des donnees aleatoires. Il peut aussi a la demande alterer les adresses
d'execution des fichiers binaires, ce qui empechera les programmes
traites d'etre executes directement. Cette derniere option n'est utile
que dans un souci de "protection" d'un programme.
Accessoirement, si vous archivez des disquettes sur PC, cela permettra
de gagner un peu de place une fois votre archive DSK compacte.
* Creer un fichier fantome
En creant dans le catalogue un fichier ne correspondant pas a un fichier
de donnees ou a un programme, et en lui allouant des blocs disques, on
peut "proteger" contre l'ecrasement des pistes/secteurs d'une disquette.
C'est principalement interessant si vous avez un loader sectoriel, ou
si vous faites de l'acces direct a des secteurs.
Cette technique a au depart ete utilise par des deplombeurs pour eviter
que les niveaux de jeux ne soient ecrases par des enregistrements de
fichiers. Certains fanzines dont je tairais le nom s'en servaient pour
faire croire qu'ils diffusaient des disquettes pleines a craquer de
donnees :-).
Ce sera tout pour cette fois !
Pour aller un peu plus loin dans le delire...
---------------------------------------------
Masquage du catalogue
*********************
En faisant des tests sur les entrees catalogue, je me suis apercu que
l'octet 15, qui n'est pas documente, a un impact sur le fichier.
Lorsque sa valeur est differente de 0, le fichier ne peut carrement
plus etre charge en memoire ! A vous de voir si cela peut servir a
quelque chose ou non (pourrissage de disquettes ?).
Header Crusher
**************
Le programme teste tous les secteurs de la disquette. S'il decouvre un
en-tete de fichier (la somme des octets 0 a 67 egale la valeur
(octet 68)*256 + (octet 69).
Il remplace les 128 premiers octets par des zeros ou des valeurs aleatoires,
a l'exception des octets :
18 (&12): type du fichier ( 0 = Basic, 1 = Basic protege, 2= binaire)
21 et 22 (&15 et &16) : adresse de chargement du fichier
24 et 25 (&18 et &19) : longueur du fichier
26 et 27 (&1A et &1B) : adresse d'execution du fichier
64 et 65 (&40 et &41) : longueur du fichier
67 et 68 (&43 et &44) : checksum de l'en-tete
Si l'option "alter exec" est activee, l'adresse d'execution du fichier
est modifiee s'il s'agit d'un fichier binaire.
Les plus perspicaces d'entre vous remarquerons qu'on a deux fois dans le
header la longueur du fichier. En modifiant manuellement l'une des
valeurs, on peut arriver a des choses surprenantes. Naturellement, si
l'idee vous vient d'experimenter par vous meme ces astuces idiotes,
n'oubliez pas de calculer le nouveau checkum du header.
Sur un fichier basic :
----------------------
* effacer les octets &15 et &16 (adresse d'execution) : le fichier est
toujours charge en memoire ! La modification de ces valeurs n'a pas
d'incidence sur la "stabilite" du programme.
* effacer les octets &18 et &19: la longueur du programme est fausse
dans la plupart des utilitaires disques. Le programme peut etre
charge en memoire. mais ne peut etre execute (plantages sur mes
fichiers de test).
* effacer les octets &40 et &41: le programme ne peut plus etre lu !
Sur un fichier binaire :
------------------------
* effacer les octets &18 et &19 : la longueur du programme est fausse
dans la plupart des utilitaires disques (sauf le Hacker). Le programme
peut par contre etre charge et execute normalement.
Chose rigolote, Discology considere ce type de fichier comme de
l'ASCII !
* effacer les octets &40 et &41: le programme ne peut plus etre lu !
Ces valeurs ne sont donc a manipuler que dans des cas particuliers (par
exemple si vous avez concu une routine de chargement sectoriel de fichiers
et que vous ne voulez pas que les fichiers puissent etre lances
directement (bref, cela ne sert a rien pour le commun des mortels !)).
NOTICE TEXTE n° 2 (4.81 Ko)
- CATALOG TRICKS 2.0 -
Another useless Tool
from
Tom et Jerry/GPA 2005-2006
As usual, this english notice is pure crap. Buy a french brain if you
not understand anything of what is written next :-).
This program is a litle toolbox whose goal is to make strange changes
on a DATA or VENDOR directory. I suppose that most of users will not
need it, but, as the tool exists, I spread it in the wild !
The main interface of Ctricks is really easy to understand, so I will
not explain it in this text.
Warning ! Ctricks has been coded very quickly when I was terminating
another program, Citadelle. I cannot guarantee it is 100% bug free,
so, ALWAYS USE IT ON A COPY of your precious programs !
What can be done with Catalog Tricks 2.0 ?
-------------------------------------------
* Apply a "protection" against directory display
It is a really simple technic, based on the fact that Amsdos does not
display characters upper than 127 when you execute a CAT or DIR command.
When you edit the directory with a sector editor, it is not quite easy
to understand. Many disk tools does not permit to read this kind of
'locked' directory (Discology can do it, french powa :-) ).
The first cpc warriors may remember that this little trick has been
used on games protected with the first generation of SPEEDLOCK.
Of course, you can remove this "protection" with Ctricks...
Ctricks can without problem hide a "graphical directory". If you don't
know what I am speaking about, download Cataclysme (advertising inside !).
* "Clean" files' headers
Header Crusher gives you the power to "clean" files' header. Datas are
replaced by zero of random values, so displaying a file header does not
gives many informations about the file. Only obligatory informations
are left in the header (file type, file start, file length, file exec
if you does not use the exec alter option).
This function can be usefull if you want to gain a little space when
you transfer your programs on PC .DSK images. It can be used too to
"hide" files' header from Sector editor search...
* Create a ghost file
A ghost file is a false file, whose purpose is to "protect" from
allocation blocs of sectors of the diskette. This is convenient if
you use a sector loader in your programs (direct access for a
database for example). Of course, it can also be used for cracking
purposes (protect levels of a game).
Some fanzine makers in the past have used ghost files to fool naive
users letting them thinking that their programs were so huge that they
needed a full side of a disk :-).
Some strange technical informations...
Directory protection
*********************
Making tests, I have notice that the firtheen byte of a directory entry
has a rare ability. Its normal value is 00. When you put another number,
the file cannot be read ! Well, it is useless in all circunstancies,
although you aspire to create the first cpc virus :-(.
Header Crusher
**************
The program tests all sectors on the disk. If it discovers a file header
(sum of bytes 0 to 67 equals value (bytee 68)*256 + (byte 69) ), it replaces
128 first bytes with zeros of random values, except for the following bytes :
18 (&12): file identification ( 0 = Basic, 1 = protected basic, 2= binary)
21 and 22 (&15 and &16) : file loading address
24 and 25 (&18 et &19) : file length
26 and 27 (&1A et &1B) : fikle start address
64 and 65 (&40 et &41) : file length (again !)
67 and 68 (&43 et &44) : header's checksum
If option "Alter exec" is activated, file start address is blanked or replaced
with false values.
I suppose you have noticed that in the header, the filr length is
present two times. Modifying manually one of these values, stranges
results can be observed.. Of course, if you experience by yourself these
tricks, don't forget to calculate the new head checksum.
On a Basic file :
-----------------
* delete bytes &15 and &16 (exec address, &170) : the file can always
been loaded and runned.
* delete bytes &18 and &19: file length is false in most of disc tools.
program can be loaded in memory but crashes when it is executed.
* delete bytes &40 and &41: program cannot be read !
On a binary file :
------------------
* delete bytes &18 and &19 : file length is false in most of disc tools
(a nice exception is The Hacker). The program can be loaded and runned.
Discology considers these altered files as ASCII (even french coders
are not perfect !).
* delete bytes &40 and &41: program cannot be read !
Well, I am afraid there is no really application to this, altough if you
absolutely want to prevent files to be loaded...
NOTICE TEXTE n° 3 (2.54 Ko)
; Catalog tricks 2 * (c) T&J/GPA
; Version 1 * maj du 09/07/06
; Corrections commentaires dans le source le 22/03/2012
ORG &A000
NOLIST
WRITE "CTRICKS.BIN"
find_command equ &BCD4
buffer equ &9000
JP init
JP readsec
JP writsec
JP calchea
JP control
sector db &00
track db &00
drive db &00
flag_init equ &BE80 ; Test si initialisation vecteurs disk ok
flag_control equ &BE81 ; Test si le secteur lu est un header de fichier
init LD HL,comread
CALL find_command
JR NC,initbug
LD (exec_84),HL
LD A,C
LD (rom_84),A
LD HL,comwrite
CALL find_command
JR NC,initbug
LD (exec_85),HL
LD A,C
LD (rom_85),A
XOR A
init1 LD (flag_init),A
RET
initbug LD A,&FF
JR init1
comread db &84
exec_84 defw &0000
rom_84 db &00
comwrite db &85
exec_85 defw &0000
rom_85 db &00
; Lecture d'un secteur
; --------------------
readsec LD A,(drive)
LD E,A
LD A,(track)
LD D,A
LD A,(sector)
LD C,A
LD HL,buffer
RST &18
readse1 DEFW exec_84
JR NC,initbug
XOR A
JR init1
; Ecriture d'un secteur
; ---------------------
writsec LD A,(drive)
LD E,A
LD A,(track)
LD D,A
LD A,(sector)
LD C,A
LD HL,buffer
RST &18
writse1 DEFW exec_85
JR NC,initbug
XOR A
JR init1
; Verification si le secteur est un header
; ----------------------------------------
control CALL somme
LD HL,buffer
LD BC,&43
ADD HL,BC
PUSH DE
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
POP DE
LD A,D
CP H
JR NZ,contr2
LD A,E
CP L
JR NZ,contr2
XOR A
contr3 LD (flag_control),A
RET
contr2 LD A,&FF
JR contr3
; Somme des octets &00 a &42 du secteur
; ------------------------------------------
; Resultat dans DE
somme LD HL,buffer
LD DE,&0000
LD B,&0
LD A,67
somme1 LD C,(HL) ; somme des octets &00 a &42 soit 67 octets
EX DE,HL
ADD HL,BC
EX DE,HL
INC HL
DEC A
JR NZ,somme1
RET
; Calcul des octets &43 et &44 (on part de la position &00) du header
; ----------------------------------------------------------------------
calchea CALL somme
EX DE,HL
LD (buffer+&43),HL
RET