Contourner un dongle anticopie vieux de 40 ans
(dmitrybrant.com)- Analyse et reconstitution du fonctionnement d’un dongle de port parallèle exigé par un compilateur RPG II de comptabilité dans les années 1990
- Le logiciel d’origine s’exécute dans une console DOS sous Windows 98 et ne fonctionne pas sans le dongle
- Après transfert de l’image disque dans un émulateur pour analyse, il s’est avéré que la même routine de protection contre la copie était insérée dans des exécutables comme RPGC.EXE et SEU.EXE
- L’analyse assembleur a confirmé que la routine renvoyait toujours une valeur constante (7606h), et une modification de 4 octets a permis de contourner la vérification du dongle
- Ainsi, le compilateur RPG II de Software West peut désormais s’exécuter sans dongle, un résultat significatif du point de vue de la préservation des logiciels anciens
La découverte d’un antique logiciel de comptabilité et de son dongle
- Un logiciel de comptabilité basé sur RPG utilisé depuis 40 ans fonctionnait encore sur un PC sous Windows 98
- RPG est un langage destiné aux mini-ordinateurs comme IBM System/3, System/32 et AS/400, ensuite porté sur MS-DOS
- Au lancement, ce programme exigeait un dongle matériel anticopie sur le port parallèle
- Les mentions « Stamford, CT » et le logo de « Software Security Inc. » restaient faiblement visibles sur le dongle
- Le mot « RUNTIME » y figurait également, et son sens est apparu plus tard au cours de l’analyse
Analyse de l’image disque et structure du compilateur RPG
- Extraction de l’image disque du système Windows 98 puis exécution dans un émulateur
- Découverte de deux versions du compilateur RPG II (développé par Software West Inc.) ainsi que de l’ensemble du code source RPG du logiciel de comptabilité
- L’ensemble prenait la forme d’un système de menus composé de plusieurs modules RPG et de fichiers batch DOS
- Le compilateur lui-même effectuait la vérification du dongle et insérait la même routine de protection dans les exécutables générés
Rétro-ingénierie de la routine de communication du port parallèle
- Analyse de SEU.EXE à l’aide du désassembleur Reko
- Au départ, aucune instruction
in/outn’était visible, mais elles ont été trouvées dans un autre segment (0800h) - Cette routine lisait l’adresse du port parallèle dans la zone de données du BIOS, puis échangeait des données via le port LPT1
- La valeur de résultat était stockée dans le registre
BX, sans valeur d’entrée, et la routine renvoyait toujours le même résultat
- Au départ, aucune instruction
Déduction de la valeur constante et modification
- À la fin de la routine, il a été confirmé que la valeur de
BHétait fixée à 76h- Seule la valeur de
BLrestait inconnue, et l’intervalle 0 à 255 a été exploré par brute force - La bonne combinaison s’est révélée être
BL=06h, soit BX=7606h
- Seule la valeur de
- Les 4 premiers octets de la routine ont été remplacés par
MOV BX,7606hetRETFafin de contourner la vérification du dongle- Le programme s’exécutait alors immédiatement, et la même modification pouvait être appliquée à d’autres exécutables contenant la même routine
Résultat et portée
- Le même code de protection anticopie a été retrouvé dans tous les composants du compilateur RPG II, ce qui permet une modification globale
- Le dongle se contentait de renvoyer une valeur constante, ce qui le rendait neutralisable avec une simple modification de 4 octets
- Le compilateur modifié fonctionne normalement sans dongle, et il est prévu de le publier plus tard dans des archives logicielles historiques, après suppression des informations personnelles
- Comme il ne reste presque aucune information en ligne sur Software West Inc., un contact supplémentaire avec le créateur est souhaité
1 commentaires
Commentaires Hacker News
Au début, la protection logicielle était vraiment très simple
J’avais autrefois le disque de mise à niveau de Windows 3.11, et l’installation échouait si une version précédente n’était pas installée
La solution consistait simplement à créer un fichier texte vide et à l’enregistrer sous le nom
win.com. L’installateur scannait tout le disque à la recherche de ce seul fichierEn réalité, le disque de mise à niveau contenait l’installation complète. À l’époque, c’était vraiment rudimentaire
J’ai donc fini par récupérer une version 3.x chez un ami pour l’installer, et comme cela ne correspondait pas à ce qui était annoncé, j’avais l’impression que c’était moralement acceptable
On peut voir une photo du produit sur ce lien eBay
Je développe un logiciel de génie civil (mes100.com)
Il y a encore aujourd’hui des utilisateurs qui préfèrent les dongles matériels. Ils disent être rassurés par la présence d’un dispositif physique qu’ils peuvent tenir en main
Comme nous vendons des licences perpétuelles, c’est problématique quand un dongle tombe en panne et qu’il n’existe plus de pièce de remplacement. Ils n’aiment pas les licences cloud, même si elles rendent possible un revenu par abonnement
Mais quoi que l’on fasse, des versions crackées circulent quand même en ligne. Nous n’avons pas les moyens d’engager des actions en justice, donc la protection reste indispensable
D’autres apprécient simplement l’autonomie qu’apporte l’absence de dépendance à un serveur tiers
C’est pourquoi le modèle SaaS ressemble à un désastre pour les utilisateurs. Je n’aime pas le piratage, mais je n’aime pas le SaaS non plus
Autrefois, les cracks étaient bien plus simples
Il suffisait parfois de remplacer un JE ou un JNE par un JMP pour contourner la protection
L’essentiel était de comprendre où se trouvait le code de protection et comment il fonctionnait
Premièrement, les développeurs vivent avec leur code bien plus longtemps que nous, donc une protection trop complexe rend les corrections de bugs difficiles
Deuxièmement, un hacker n’a besoin de connaître que quelques astuces, alors que le développeur doit toutes les bloquer
Troisièmement, les mécanismes de protection sont une tâche ingrate, peu amusante et rarement reconnue, d’où un fort manque de motivation
Je l’ai saisie et l’activation a fonctionné immédiatement. Ensuite, je l’ai acheté officiellement
Le principe consistait à signer la disquette au laser, mais même un adolescent sachant lire l’assembleur pouvait la contourner facilement
On pouvait même la copier simplement en rayant la disquette avec une épingle. C’était au final un cas où le marketing avait devancé la technique
J’écrivais du code RPG II dans les années 80, puis dans les années 90 j’ai aidé à migrer vers un environnement d’émulation S/36
Nous utilisions un produit d’une société appelée California Software Products, qui fonctionnait plutôt bien, au point que l’entreprise a survécu jusqu’au départ à la retraite de son fondateur
À la remarque « cette protection contre la copie n’est-elle pas trop simple ? », je pense qu’à l’époque c’était un niveau d’ingénierie approprié
Avec des émulateurs et des décompilateurs, on peut résoudre ça en quelques jours, mais à l’époque ces outils n’existaient même pas
90 % des logiciels de l’époque étaient vraiment aussi simples. Ce n’est pas qu’on passait à côté de quelque chose de complexe
Quand j’étais jeune, j’ai cracké un jeu Ultima
C’était parce que j’en avais assez d’insérer la disquette à chaque fois. Le code se déchiffrait lui-même et lisait l’adresse de départ depuis un secteur spécifique du disque
Ce secteur ne pouvait pas être copié avec les outils de duplication habituels, mais j’ai réglé le problème en modifiant l’en-tête de l’exécutable
Au début des années 90, j’ai assuré la maintenance d’un système interne de renouvellement de licence développé par le siège d’un réseau de franchises
Il fallait le renouveler chaque mois par disquette, et le siège coupait parfois arbitrairement des points de vente qui lui déplaisaient
Plusieurs franchisés se sont finalement regroupés pour intenter une action en justice, et j’ai créé un générateur de licences sous DOS permettant à chaque site de recevoir un code par téléphone pour renouveler sa licence
Une fois le procès terminé, j’ai diffusé un patch supprimant complètement la vérification de licence. J’aimerais bien le relancer un jour avec DOSBox
J’ai trouvé intéressant de lire que Windows 95 est encore utilisé en production
Contrairement aux tendances flamboyantes de l’IA, le changement technologique est lent dans les secteurs ennuyeux de l’industrie
Il existe même encore des systèmes tournant sur un émulateur PDP-11
Il est frappant de voir que ce logiciel et ce matériel sont encore utilisés dans certaines entreprises
C’est pourquoi publier une version crackée pourrait comporter un risque juridique
Les entreprises sont prêtes à payer très cher pour maintenir leurs anciens systèmes, ce qui perpétue cette dépendance au fournisseur
Si des brevets ou des droits de propriété intellectuelle sont encore valides, il faut absolument le vérifier avant toute publication
Un dongle matériel qui se contente de renvoyer toujours le même nombre, c’est vraiment une protection très simple
Mais à l’époque, c’était suffisant. Même aujourd’hui, des logiciels d’entreprise se contentent souvent d’une clé de licence du même genre
Au fond, c’était la version des années 80 du principe « tant qu’on reçoit un signal disant qu’une facture existe, on paie »