1 points par GN⁺ 2026-02-02 | 1 commentaires | Partager sur WhatsApp
  • 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
Publicité

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/out n’é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
Publicité

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 BL restait 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
  • Les 4 premiers octets de la routine ont été remplacés par MOV BX,7606h et RETF afin 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

 
GN⁺ 2026-02-02
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 fichier
    En réalité, le disque de mise à niveau contenait l’installation complète. À l’époque, c’était vraiment rudimentaire

    • Quand j’étais enfant, mon père avait acheté la version de mise à niveau de Windows 3.1, indiquée comme « mise à niveau possible depuis la version 3.0 ou antérieure », mais en pratique seules les versions 3.x étaient reconnues
      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

    • L’une des raisons pour lesquelles ces dongles sont appréciés, c’est l’existence d’environnements air gap. Dans les secteurs qui manipulent des données de conception sensibles, comme le militaire ou le nucléaire, aucune connexion à un réseau externe n’est possible
      D’autres apprécient simplement l’autonomie qu’apporte l’absence de dépendance à un serveur tiers
    • Vous dites que c’est un secteur où la réglementation évolue lentement et où l’incitation à faire des mises à niveau est faible, mais dans ce cas on peut se demander pourquoi les utilisateurs continueraient à payer
    • Mon père utilisait un programme de génie civil appelé « Cosmos », et il y avait ce genre de dongle. Je me souviens à quel point c’était agaçant quand il n’était pas reconnu
    • Du point de vue de l’utilisateur, l’attitude « si ce n’est pas cassé, inutile de changer » est rationnelle
      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

    • Il y a plusieurs raisons à l’existence de protections aussi simples
      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
    • J’avais un jour ouvert un logiciel de démonstration dans un débogueur, et la chaîne du code d’activation était visible telle quelle dans un dump mémoire
      Je l’ai saisie et l’activation a fonctionné immédiatement. Ensuite, je l’ai acheté officiellement
    • J’ai déjà cassé la protection ProLok « laser protection » de dBASE III
      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

    • Le public visé compte beaucoup. Si le but est d’empêcher de simples entreprises de secteurs non techniques de copier le logiciel, il n’est pas nécessaire de résister à des spécialistes du reverse engineering
    • Les décompilateurs n’arrivaient pas à analyser le code de protection
      90 % des logiciels de l’époque étaient vraiment aussi simples. Ce n’est pas qu’on passait à côté de quelque chose de complexe
    • Vers 2000, j’ai fait un travail de bidouillage similaire dans une petite société de télécommunications à Buenos Aires. La plupart des cas avaient à peu près le niveau de difficulté décrit par l’auteur
    • Notre société informatique protège aussi ses fichiers sensibles en effectuant un décalage de bits pour produire un magic number. Pas besoin que ce soit compliqué
  • 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

    • J’ai encore vu en 2014 une entreprise faire tourner Windows 95 en virtualisation. C’était un ancien logiciel médical, d’une stabilité étonnante
    • À voir les captures d’écran, le programme semble conçu pour DOS. Windows servait probablement seulement au partage de fichiers
    • Win95 n’a « que » 30 ans, et peut encore fonctionner sur certains matériels récents
      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 »