Le passe-partout électronique
ou
l'initiation à la neutralisation des protections logicielles
METTONS LES CHOSES AU POINT
---------------------------
Derrière ce somptueux titre à connotation quelque peu illégale
se cache en fait un article qui cherchera simplement à dévoiler
aux non-initiés quelques méthodes employées pour - n'ayons pas
peur des mots - "cracker" un programme.
J'en vois certains qui s'imaginent déjà devant leur clavier à
pénétrer les systèmes informatiques des banques ou à pirater les
réseaux... Eh bien, NON, il ne s'agit pas ici de cela. Il s'agit
d'éclairer un peu certains curieux qui voient en le piratage des
formules magiques et des méthodes systématiquement peu ortho-
doxes...
LES OUTILS INDISPENSABLES...
----------------------------
Avant de s'attaquer au déplombage, tout hacker possède dans
son attirail au moins:
Un débugger: (ADEBUG!!!)
-----------
Cet outil permet de regarder ce qu'un programme a dans le ventre.
Autrement dit, il va vous permettre de voir les instructions as-
sembleur qui le composent et de suivre à la trace son exécution.
Un désassembleur: (EASY RIDER?!)
----------------
Un programme exécutable ne laisse plus aucune trace du programme
source. Le désassembleur va vous permettre de décompiler un pro-
gramme pour avoir de nouveau son source et pour l'étudier.
Un moniteur de disk: (MEGARIPPER!?)
-------------------
Ce logiciel va permettre de s'attaquer directement au "hard" de
la disquette d'en modifier le contenu ou d'en extraire une par-
tie. Si possible, essayez de mettre la main sur un multi-décom-
pacteur.
LES FORMULES MAGIQUES :
---------------------
Le hacker va chercher à neutraliser la protection. Cela sous-
entend qu'il va empêcher ou sauter son exécution. Pour se faire,
il va remplacer l'instruction (ou les instructions) composant la
protection par d'autres ne faisant... rien!
Le tout est donc de localiser la protection à l'aide du debug-
ger, puis de mettre des NOP où il faut à l'aide du moniteur ou du
debugger... (les NOPs sont les instructions qui ne font rien.)
QUELQUES PROTECTIONS:
--------------------
Nous allons voir quelques types de protections et comment les
passer:
A) "RANDOM"
-----------
Ce genre de protection va générer un numéro aléatoire, qui va
renvoyer l'utilisateur à un manuel. Il devra entrer la donnée
correspondante.
Il faut placer des breakpoints à chaque TRAP #14 et regarder
si l'appel RANDOM a lieu à cet endroit...
Certaines protections consultent les données d'un fichier sui-
vant l'heure, par exemple, pour avoir un numéro aléatoire.
Il suffit de remplir ce fichier par une même donnée.
B) LES PROTECTIONS EN HARD...
-----------------------------
Celles-ci sont les plus dures à passer.
SUR DISK : les duplicateurs industriels sont capables d'écrire
des données que nos contrôleurs ne peuvent reproduire. Le lo-
giciel va alors vérifier si cette donnée est présente à un en-
droit particulier du disk.
Juste avant le déplacement de la tête de lecture (on entend
généralement un gros bruit...), le hacker va récupérer la main
et neutraliser le test.
EN CLE : celles-ci utilisent les interruptions lorsqu'elles
sont insérées dans un port.
Il faut simuler l'existence de la clé en créant l'interruption
logicielle et en écrivant son code... Il est préférable de
posséder un exemplaire de la clé. Cela rend le travail plus
facile.
C) LES PROTECTIONS COMPACTEES:
------------------------------
Celles-ci sont décompactées par le programme. Il faut non seu-
lement les localiser, mais encore les modifier au bon moment.
Le hacker va laisser la protection se décompresser puis, juste
avant sont exécution, il va insérer une instruction l'auto-
modifiant du genre "MOVE #$4e71,adresse" à l'endroit ou elle
entre en jeu. Si ça marche, il va désassembler le programme,
mettre l'instruction d'auto-modification au même endroit puis
recompiler. A la prochaine exécution et après le décompactage,
la protection sera annulée.
LE BA-BA.
---------
Les étapes à suivre pour cracker un soft. Cette méthode est
valable pour les petites protections par code. N'allez pas croire
qu'il faut systématiquement procéder ainsi.
a) Dupliquer la disquette originale avec sa protection.
b) Charger un débugger puis le programme a cracker.
c) Prendre une feuille et du papier (beaucoup!!!)
d) Mettre des breakpoints un peu partout:
- après chaque JSR ou BSR
- à chaque TRAP
Ceci vous assurera de reprendre la main dans la plupart des
cas (en utilisant ADEBUG bien sûr...)
e) Lancer l'exécution.
f) Si vous ne reprenez pas la main, faire un break au moment
le plus opportun (juste avant la demande de code par ex.)
g) Si vous ne reprenez toujours pas la main, recommencez à
l'étape a) en exécutant par bout de programme.
Si nécessaire, passez en IPL 7.
h) Arrivé ici, vous avez a peu près localisé ou se trouve la
protection.
- noter l'adresse actuelle, cela vous permettra au prochain
essai d'éviter de repasser par les étapes précédentes.
- chercher où se trouvent les données en mémoire (ex : les
couleurs, les mots de passe...) et les modifier si nécés-
saire.
- regarder sur quoi pointent les registres d'adresse.
- placer des breakpoints aux BNE. Ceux-ci sont généralement
les sauts lorsque le code est mauvais.
- noter les adresses intéressantes.
i) Exécutez d'un coup les BSR et JSR jusqu'à celui qui exécute
la protection. Ne pas oublier de noter son adresse.
j) Vous savez maintenant où se trouve la protection. Passez si
nécessaire plusieurs fois par i) et j) jusqu'à trouver où
se trouve précisément le test.
k) Noter une partie de la séquence de code de la protection en
HEXA.
l) Remplacer le code de la protection par des NOPs ou mettre
un RTS à sa première instruction.
m) Lancer et vérifier si la protection est neutralisée. Recom-
mencer autant de fois que nécessaire les étapes j) à l).
n) Débugger le programme pour vérifier si l'annulation de la
protection n'a pas altéré l'exécution future.
o) A l'aide d'un moniteur de disk, rechercher les séquences en
HEXA notées en k) et remplacer le code par 4e71 (NOP) puis
sauver.
p) Et voilà le travail!
HASTA LA VISTA
--------------
J'imagine que les crackers confirmés ont pissé de rire devant
cet article. Je suis d'accord avec eux et je confirme que le hac-
king est un art et qu'il n'est pas accessible facilement. Il faut
de la persévérance pour arriver au bout de certaines protections.
J'espère que les crackeurs que je ne citerai pas seront d'accord
avec moi. De toutes façons, je suis sûr que ça a au moins interes-
se les pauvres hères qui n'y connaissent rien... On se ratrappe
comme on peut... Héhéhé !
Allez,
see ya !
article écrit le 10/12/95
en 1h30 pour TOXIC MAG 11
par DZ?DJTP/Supremacy.
------------------------------------------------------------------
Je vous laisse décrypter mon pseudo sachant que D=S et que les
lettres sont décalées par rapport au clavier...
------------------------------------------------------------------
Note de Thyrex: Je tiens à préciser que No Limit Coding ne pratique
pas le piratage. Sachez que c'est cela qui a fait
fuir les programmeurs de jeux.... Il est vrai que
ça m'aurait fait chier d'acheter un jeu 'OCEAN'...
Et comme si ce n'était pas suffisant , maintenant
des crétins crackent des jeux qui sont à porté de
toutes les bourses !!! (UTOPOS etc...).
je voudrais bien voir la tête d'anciens crackers
reconvertis dans le développement de jeux victimes
de ce genre de delit (il y'en a !!!!).
[ Retour au sommaire ]