home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 18 / CD_ASCQ_18_111294_W.iso / dos / prg / pas / gpro105 / gpro.doc < prev    next >
Text File  |  1994-10-26  |  29KB  |  727 lines

  1.   26 Octobre 1994    -    Gpro 1.05                                   
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Gpro  "le meilleur kit de  protection  anti-debugging  pour  les fichiers EXE"
  8. v01.05
  9.  
  10.         Gpro: Un kit anti-debug ??
  11.        └──────────────────────────┘
  12.  
  13.         Gpro  est un kit anti-déboguage (anti-debug en français).  C'est
  14.         pas  la peine de me regarder avec des grands yeux,  je vais vous
  15.         expliquer  !  Tout d'abord,  commençons par vous.  Vous êtes  un
  16.         developpeur indépendant ou même pour le compte d'une boite  (par
  17.         exemple  auteur de sharewares à succés  !),  voir  distributeur,
  18.         importateur  ou quoi que ce soit d'autre ayant rapport  avec  la
  19.         distribution ou vente de programmes.  Je ne vous apprendrez rien
  20.         en parlant de piratage.  Ce domaine de la micro-informatique est
  21.         même connu du grand public.  Je ne vous apprendrez rien non plus
  22.         en  vous disant que qui dit piratage,  dit pirate (ça  coule  de
  23.         source,  enfin quoi,  je vais pas tout vous dire quand même...).
  24.         Or,  pourtant,  il  parait  que  les   logiciels   qui   sortent
  25.         actuellement  aussi bien dans le commerce que dans le  shareware
  26.         sont  protégés. Par quoi ?  Par qui ? Comment ? Ça,  souvent, un
  27.         cracker  ne s'en  rend  même  pas  trés  bien  compte  lorsqu'il
  28.         rencontre  une protection de "grande  diffusion".  Un  loader  à
  29.         enlever,  un jne à remplacer par un  nop-nop,  ou  autres  d'une
  30.         simplicité  équivalente. Certe,  on pourra me dire que celà fait
  31.         partie  de la stratégie de vente,  coco. Mais il y  a  diffusion
  32.         limitée et diffusion limitée. Tout d'abord, un protection bridée
  33.         n'est pas une protection.  Si elle peut être cracké en 3 minutes
  34.         par quelqu'un,  le logiciel sera sur un board ou dans les boites
  35.         postales illico presto.  Une bonne protection est une protection
  36.         qui est capable de résister relativement longtemps aux  attaques
  37.         du  cracker. Et là,  j'affirme qu'aucun protection n'est totale.
  38.         Tant  qu'il existe  une  interface  entre  le  programme  et  la
  39.         protection, la protection n'est pas infaible (je pense notemment
  40.         aux  dongles, qui sont souvent interfacés  tellement  piètrement
  41.         qu'ils sont crackés plus facilement qu'un protection  uniquement
  42.         logicielle). C'est pourquoi je ne vous dit pas comme beaucoup de
  43.         commerciaux  que ma protection est la  protection  "ultime",  ou
  44.         garantie  "unbreakable", mais que c'est la meilleure  protection
  45.         du  moment.  Je dis bien "du moment" car  une  protection  s'use
  46.         relativement rapidement,  surtout avec les progrés des debuggers
  47.         et autres sourceurs. Bien souvent on vous parle d'une protection
  48.         qui  ne  nécessite  aucun  travail  de   programmation   ou   de
  49.         plug'n'run.  C'est là  un  mensonge  que  de  prétendre  pouvoir
  50.         protéger  un logiciel juste en rajoutant une  couche  logicielle
  51.         car  ce qu'un logiciel peut faire,  un autre  peut  le  défaire.
  52.         Ainsi,  s'il  est  vrai  que  Gpro  est   déjà   efficace   sans
  53.         programmation additionnelle,  il est vivement conseillé de faire
  54.         des  appels à GRI (Gpro Resident  Interface)  (cf  le  guide  du
  55.         programmeur).
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   26 Octobre 1994    -    Gpro 1.05                                     2.
  68.  
  69.  
  70.  
  71.  
  72.  
  73.         Qui a besoin de Gpro ?
  74.        └──────────────────────┘
  75.  
  76.         Gpro  peut résoudre beaucoup de vos problèmes.  Pour les auteurs
  77.         de   sharewares,   il   permet   de   sécuriser   les   méthodes
  78.         d'enregistrement  ( fini  les  patchs  pour  rendre  la  version
  79.         shareware  en autenthique version enregistrée - suppression  des
  80.         messages  et autres bridages - ),  pour les auteurs de logiciels
  81.         commerciaux  (  jeux  ou  autres  ),  il  permet  d'assurer  des
  82.         lendemains  qui chantent en empechant le debuggage du  programme
  83.         et en particulier de la protection ( trés utile pour les  codes,
  84.         en  plus du dongle...  ) et pour  tout  le  monde  vous  pourrez
  85.         limiter l'accés à votre tout dernier logiciel.   Il faut bien se
  86.         rendre  compte  que  grâce  à  Gpro,  une   demande   de   code,
  87.         _même_par_une_interruption_DOS_,    devient    une    protection
  88.         redoutable!! (cf Conseils de sécurité) De plus, comparez le prix
  89.         de Gpro aux prix des kits de protection du commerce (en plus pas
  90.         super fiables!):  gratuit pour un auteur de FreeWare, 90 FF pour
  91.         un  auteur de ShareWare,  490 FF pour les logiciels commerciaux.
  92.         Jetez  un oeil sur le formulaire  d'enregistrement  REGISTER.FRM
  93.         avant de sortir quoique se soit de non protégé !!
  94.  
  95.  
  96.         Conseils de sécurité
  97.        └────────────────────┘
  98.  
  99.         Gpro  permet de protéger vos programmes contre tout  envahisseur
  100.         non invité.  Même si Gpro est terriblement efficace en lui même,
  101.         il  y a des règles de  sécurités  qu'il  faut  suivre  avant  de
  102.         sortir un programme:
  103.  
  104.         Tout  d'abord, GRI n'est pas fait  pour  les  cleps,  il  _faut_
  105.         l'utiliser  sinon on va au devant de quelques ennuits.  Même  si
  106.         vous  ne l'utilisez pas à donf,  appelez de temps  en  temps  un
  107.         service  de GRI pour vérifier si  l'installation  est  effectuée
  108.         correctement,  si les flags sont bien renvoyés,  si il n'y à pas
  109.         un  debugger en route ...  Il est évident que les appels  à  GRI
  110.         doivent  s'accentuer autour des parties à protéger  (demande  de
  111.         codes, sauvegarde...).
  112.  
  113.         Ensuite,  il ne faut pas oublier que  le  cracker  est  un  être
  114.         humain,  de chair,  de sang,  et  d'adrénaline.  Alors,  pas  de
  115.         pitié,  jouez de vices, ruses  et coups  bas. Par exemple, avant
  116.         l'appel de GRI, simulez un appel DOS (l'int 3 est détournée pour
  117.         l'int 21 dans de trés nombreux schémas de protections,  mais pas
  118.         dans  Gpro,  on  n'est  pas  des  touristes  !),   ajoutez   des
  119.         instructions  parfaitement inutiles (genres  vous  recopiez  des
  120.         blocks  de mémoire les uns sur les autres,  vous sauvegardez les
  121.         vecteurs  d'int, les détournez et finalement les  restaurez...).
  122.         Le reste est question d'imagination.
  123.  
  124.         De  plus, Gpro utilise un cryptage  sommaire  (qui  devait  être
  125.         rapide  mais relativement sûr)  pour chiffrer  son  code  et  un
  126.         morceau  du code du programme (le premier segment de code).  Par
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.   26 Octobre 1994    -    Gpro 1.05                                     3.
  134.  
  135.  
  136.  
  137.  
  138.  
  139.         contre,  vous  devez  profiter  du   fait   que   Gpro   a   été
  140.         judicieusement  écrit pour utiliser un cryptage de votre  moule,
  141.         ou même,  et celà je le conseille, un compresseur: en effet, des
  142.         programmes  comme  LZEXE,  PKLITE  ou  DIET  sont  les meilleurs
  143.         "scrambleurs" que l'on puisse réver.  Par contre, vous devez les
  144.         utilisez  AVANT Gpro,  et ceci non  à  cause  d'un  problème  de
  145.         compatibilité (on est dans Gpro, pas dans Windaube !), mais pour
  146.         profiter  du cryptage dont  au  sujet  duquel  je  vous  parlais
  147.         quelques  lignes  plus  haut.   Le   chargement   du   code   de
  148.         décompression,  le header,  tout quoi!,  seront  cryptés.  Ainsi
  149.         impossible  de reconnaitre ce qu'il y a aprés Gpro !!  Que  celà
  150.         soit fait exprés ne m'étonnerait pas...
  151.  
  152.         Gpro est idéal si vous utilisez une autre protection ( comme  un
  153.         dongle,  un disk d'installation... ) ou même pour vous permettre
  154.         de  brider vos versions publiques.  Un readln()  ou autre est en
  155.         effet  efficace pour valider un  enregistrement  (  un  cryptage
  156.         sommaire, un cmp suffisent ).
  157.  
  158.         Si vous utilisez une protection demandant un code au clavier, ne
  159.         laissez  jamais en mémoire le code correct en  clair,  détournez
  160.         les  interruptions  comme  Ctrl-Brk,  PrintScr...   L'idéal  est
  161.         d'écrire une nouvelle int 9 pour ne laisser jamais la main à  un
  162.         élément extérieur.
  163.  
  164.         Dans tous les cas n'oubliez pas d'effacer le code de  protection
  165.         devenu inutile en mémoire.
  166.  
  167.         Pour  faire un systeme complet de protection,  regardez  [7]  ou
  168.         [8].
  169.  
  170.         Gpro Resident Interface (GRI): Guide du programmeur
  171.        └───────────────────────────────────────────────────┘
  172.  
  173.         Gpro,  lorsqu'il lance l'application laisse un bout de  code  en
  174.         mémoire  (à la fin du block reservé ou "en  haut"  de  la  RAM).
  175.         Cette mémoire protégée contient divers services résidents que le
  176.         programme  peut appeler par le  biais  des  interruptions  (pour
  177.         savoir comment appeler une interruption avec un langage de  haut
  178.         niveau,  zieutez dans la doc,  souvent une fonction genre  int()
  179.         existe,  sinon essayez  de  passer  par  l'assembleur...).   Les
  180.         interruptions détournées par Gpro sont principalement les int 3h
  181.         et 21h. L'int 3 est utilisée par la plupart des debuggeurs comme
  182.         BreakPoint,  le fait de  s'approprier cette int peu  les  géner,
  183.         mais  ce n'est pas la le but premier de la manip (en  fait,  les
  184.         debuggers  rafraichissent  les  ints  quand  ils  "swapent"   de
  185.         l'application  au debugger,  ou utilisent le mode  v86).   C'est
  186.         l'int  3  qui  va  faire  l'interface  entre   Gpro   et   votre
  187.         application.  L'avantage de l'int 3 c'est que sont OpCode est de
  188.         1  octet (CCh,  si je ne m'abuse) et qu'ainsi si le cracker veut
  189.         changer  tous les appels à l'int 3 par des appels à  l'int  62h,
  190.         par  exemple, qu'il peut mieux maitriser,   il modifiera tout le
  191.         programme (car un appel à l'int 62h,  soit CDh 62h, ne tient pas
  192.         à la place d'un appel à l'int 3).  Souvent, avec un debugger, le
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.   26 Octobre 1994    -    Gpro 1.05                                     4.
  200.  
  201.  
  202.  
  203.  
  204.  
  205.         programme  s'interrompt  à l'appel de l'int  3  et  le  debugger
  206.         refuse  de  la tracer  car il croit que c'est un de ses   arrets
  207.         internes.   Il existe des ruses pour déjouer cet artifice,  mais
  208.         elle  sont peu connues  et  lourdes  à  mettre  en  place.  Mais
  209.         surtout,  ces ruses ne déjouent pas les services  eux  mêmes  de
  210.         l'int  3,   alors...   L'int  21h,   elle,  est  détournée  pour
  211.         prévenir  la sortie  du   programme  avec   l'int  21h/4ch.   La
  212.         routine s'expulse de la mémoire et sort proprement du programme.
  213.  
  214.         Bien,  aprés cette introduction  où  certaines  choses  ont  été
  215.         précisées, passons au coté programmation.
  216.  
  217.         GRI  est donc basée sur l'exploitation de l'int 3.   Toutes  les
  218.         fonctions  ainsi documentées sont prêtes à  fonctionner  dès  le
  219.         lancement de votre application. Il n'y a aucune initialisation à
  220.         effectuer. Bien, pour appeler un service, mettez le numero de la
  221.         fonction dans _BX_. Celà diffère des habitudes de DOS ou du BIOS
  222.         où les numeros de fonctions sont dans AX mais c'est fait exprés.
  223.         En  effet, le cracker,  au fait des  choses  du  monde,  connait
  224.         évidemment  la ruse classique de  l'int  3.   Dans  beaucoup  de
  225.         schémas de protections elle est utilisée (c'est le B.A.BA de  la
  226.         protection sur PC,  et donc, incontournable) en remplacement des
  227.         interruptions les plus utilisées (soient 21h et 10h), et ne fait
  228.         qu'un  jmp à la dite interruption.   Bien sûr,  pour  tracer  le
  229.         programme,  il suffit de regarder l'adresse de l'int directement
  230.         et de placer CS:IP où il devrait se trouver "légalement".  Si le
  231.         cracker peut perdre quelques temps avant de comprendre que l'int
  232.         3 est un _nouveau_ service, c'est toujours ça de gagné ! En fait
  233.         je  vous encourage vivement à tromper l'ennemi:  par exemple  en
  234.         faisant  juste avant INT 3  un  truc  du  genre  mov  ah,30h  ou
  235.         autres...( bande de vicieux, va! ).
  236.  
  237.         Bon maintenant, les choses serieuses commencent:
  238.  
  239.  
  240.         ================================================================
  241.         bx=0000 - StartChrono - Démarre le chronometre
  242.         Entrée: néant
  243.         Sortie: ax=4848h si tout va bien
  244.  
  245.         Cette  fonction  permet   d'initialiser   le   chronometre.   Le
  246.         chronometre  permet de mesurer le temps  (?!?!  je  lis  ce  que
  247.         j'écris des fois !!) mis pour l'éxecution d'une commande. Ainsi,
  248.         une routine d'analyse d'un code d'entrée ou autre peut savoir si
  249.         elle  est tracée ou pas.  En effet,  un cracker mettra forcement
  250.         beaucoup plus de temps à regarder les instructions pas à pas que
  251.         si  la routine était executée "en direct".  Elle marche de paire
  252.         avec la fonction 0001.
  253.  
  254.         ================================================================
  255.         bx=0001 - CheckChrono - Vérifie le chronometre
  256.         Entrée: cx=temps en 1/18.2 secondes
  257.         Sortie: ax=a246h si tout va bien
  258.                 Retour déguelasse si le temps est écoulé (le but est de
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.   26 Octobre 1994    -    Gpro 1.05                                     5.
  266.  
  267.  
  268.  
  269.  
  270.  
  271.                 planter le debugger !!)
  272.  
  273.         Cette  fonction vérifie si le temps écoulé  entre  2  points  du
  274.         programme  n'est pas  "illégal".  L'unité  utilisée  est  1/18.2
  275.         secondes, si la valeur de cx est inferieure au temps écoulé, GRI
  276.         rend  la main immédiatement,  garantissant un  plantage  systeme
  277.         quelques  lignes plus loin (c'est le but recherché).  Par contre
  278.         si  le  programme  se  déroule  normalement,  l'appel  de  cette
  279.         fonction ne se verra même pas.
  280.  
  281.         ================================================================
  282.         bx=0002 - AppelInt3 - Appel à l'ancien gestionnaire de l'int 3
  283.  
  284.         Entrée: néant
  285.         Sortie: ??
  286.  
  287.         Permet  au programme d'utiliser un programme résident autre  que
  288.         GRI  qui utilise aussi l'int 3 (c'est trés rare,  mais c'est  au
  289.         cas où). Le registre bx est sacrifié, désolé...
  290.  
  291.         ================================================================
  292.         bx=0003 - PlanteSys - Plante completement le systeme
  293.  
  294.         Entrée: néant
  295.         Sortie: are you jokin' ?
  296.  
  297.         Ouais, vous savez le faire, mais cette routine efface toute
  298.         preuve permettant un BackTrace pour localiser la faille et jmp
  299.         "aléatoirement" dans la mémoire: plantage assuré pour tout
  300.         utilisateur frauduleux !
  301.  
  302.         ================================================================
  303.         bx=0004 - CheckInstall - Verifie si GRI est bien actif
  304.  
  305.         Entrée: néant
  306.         Sortie: ax=726fh si GRI est actif et valide
  307.  
  308.         ================================================================
  309.         bx=0005 - CheckDebug - Regarde si un debugger est en mémoire
  310.  
  311.         Entrée: ax=0000 : Appel PlanteSys si un debugger est trouvé
  312.                 ax<>0000 : Résultat dans bx
  313.         Sortie: bx=4148h si un debugger est actif
  314.                 bx=5858h si pas de debugger
  315.  
  316.         ================================================================
  317.         bx=0006 - StopDebug - Arrete le debugger si présent
  318.  
  319.         Entrée: néant
  320.         Sortie: néant
  321.  
  322.         Permet  de rendre  la  main  au  debugger.  L'interet  de  cette
  323.         fonction  est  d'arreter   momentanément   le   déroulement   du
  324.         programme.  Ce n'est interressant que si le Chronometre  est  en
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.   26 Octobre 1994    -    Gpro 1.05                                     6.
  332.  
  333.  
  334.  
  335.  
  336.  
  337.         marche:  le cracker laisse écouler un temps qui  peut  lui  être
  338.         fatal...  Surtout n'appelez pas inconsiderement cette  fonction,
  339.         par exemple, hors d'une boucle de temps.
  340.  
  341.         ================================================================
  342.         Int 60h - Verifie l'integrité de GRI
  343.  
  344.         Entrée: néant
  345.         Sortie: ax=5343h si tout va bien
  346.  
  347.         Verifie si les fonctionnalités de GRI n'ont pas été modifiées
  348.         par un calcum de checksum. Si la somme de contrôle n'est pas
  349.         valide, le systeme se plante.
  350.  
  351.         ================================================================
  352.         Int 21h ah=4c - Terminer le programme
  353.  
  354.         Entrée: al= code de sortie
  355.         Sortie: néant
  356.  
  357.         Pour terminer votre programme, la fonction 4c de l'interruption
  358.         21h doit être utilisée (c'est la méthode utilisée par la plupart
  359.         des compilateurs actuels). GRI s'enlevera de la mémoire et la
  360.         place sera nette pour de nouvelles aventures...
  361.  
  362.         NB:  Les plantages du systeme des diverses  fonctions  sont  des
  363.         plantages  "propres" en ce sens ou il  n'y  a  aucun  risque  de
  364.         destruction  ou de perte de données hors celles  en  mémoire  du
  365.         programme en cours.
  366.  
  367.         Installation de Gpro
  368.        └────────────────────┘
  369.  
  370.         L'installation  de Gpro au sein d'un programme se fait  en  deux
  371.         temps:  tout d'abord vous devez rajouter les fonctionnalités  de
  372.         GRI  un  peu  partout  dans  votre  programme,  ensuite,   aprés
  373.         compilation,  utilisez GPRO.EXE.  La syntaxe  est  la  suivante:
  374.  
  375.         GPRO NomDeFichier[.exe]
  376.  
  377.         Ceci  modifiera le programme  NomDeFichier.exe  en  ajoutant  le
  378.         loader  (l'installation   de   GRI   est   alors   automatique).
  379.         L'utilisateur  n'aura rien de plus à faire qu'avant:  entrer  le
  380.         nom  du programme le fait executer immédiatement,  pas besoin de
  381.         charger  de résidents.   Pour les programmeurs en Pascal, l'unit
  382.         GPRO.PAS vous permetra d'intégrer à vos programmes Pascal  Gpro.
  383.         Elle fonctionne exactement comme GRI.
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.   26 Octobre 1994    -    Gpro 1.05                                     7.
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.         Validité de la protection
  405.        └─────────────────────────┘
  406.  
  407.         Gpro est muni de puissants outils anti-debugging,  aussi bien en
  408.         interne,  lors de la phase de chargement du programme  que  dans
  409.         GRI.  Gpro est capable de détecter la présence de  debuggers  en
  410.         mémoire.  Il  y  a  deux  types  de  détections:  signature   et
  411.         "heuristic".
  412.         La méthode par signature détecte les débuggers courants (  parmi
  413.         lesquels  Turbo Debugger,  Periscope, ICE,  les  debuggers  Phar
  414.         Lap...).
  415.         La méthode heuristic,  reconnais en "dynamique" la présence d'un
  416.         débugger  ( code douteux en mémoire...).  C'est le même  systeme
  417.         que pour la detection de virus.
  418.  
  419.         J'ai testé en mode signature les debuggers:
  420.                 * Turbo Debugger 3.2, 4.0
  421.                 * Turbo Debugger 286 3.2, 4.0
  422.                 * Turbo Debugger 386 3.2, 4.0
  423.                 * Periscope (EM) 5.00, 5.31
  424.                 * Periscope Hard Model 1 rev 3A
  425.                 * 386|SRCBug
  426.                 * ADX Debug
  427.  
  428.         En mode heuristic:
  429.                 * DOS 6.22 DEBUG (??)
  430.                 * Microsoft Code View 386
  431.                 * GameTools 3.21
  432.                 * The Game Wizard
  433.  
  434.         Soit un taux de réussite de 100%,  il y a gros à parier que Gpro
  435.         marche aussi avec des debuggers que je n'ai pas testé.
  436.  
  437.         Pour  ceux qui croient encore dans les sourcers et autres,  j'ai
  438.         testé Sourcer et même Hacker's View. Pas plus de réussite.
  439.  
  440.         Bugs report
  441.        └───────────┘
  442.  
  443.         J'ai porté une grande attention, comme le necessite un programme
  444.         comme  Gpro, aux diverses erreurs de  programmations  et  autres
  445.         bugs.  Je n'en ai pas trouvés de flagrants (j'ai testé Gpro avec
  446.         des  programmes  de   manipulations   de   fichier,   affichages
  447.         graphiques,  disagnostiques d'erreurs etc...), mais si vous avez
  448.         un probleme quelconque n'hésitez pas à me le faire savoir.  Il y
  449.         a  quelques  petites   choses   à   préciser   tout   de   même:
  450.  
  451.                *  certains compresseurs d'éxécutables (il n'y en  a  pas
  452.                des  masses, vous trouverez facilement desquels  je  veux
  453.                parler...)  copie leur code en mémoire,  dans un  endroit
  454.                qui  ne leur est pas réservé.  Il se peut qu'ils écrasent
  455.                GRI  et dans ce cas un plantage est assuré.  Ce n'est pas
  456.                la faute de Gpro, je réserve la mémoire que j'utilise (on
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.   26 Octobre 1994    -    Gpro 1.05                                     8.
  464.  
  465.  
  466.  
  467.  
  468.  
  469.                ne dirait pas pourtant à la vue du source, eh eh...).
  470.  
  471.                *  Pour  des  raisons  d'éléctronique,  Gpro  n'est   pas
  472.                completement  compatible avec  les  copro  arithmétiques.
  473.                Leur  présence  est  completement  tolérée,   mais   leur
  474.                utilisation  ne garantie pas une  stabilité  parfaite  du
  475.                systeme.
  476.  
  477.                *  Gpro détourne l'int 4 (interruption  d'overflow)  pour
  478.                éviter  quelques mauvais tours de la part  du  cracker  (
  479.                cette  int  aurait  put  permettre,  de  part   certaines
  480.                caractéristiques  perverses, de penetrer plus avant  dans
  481.                le code ). Son utilisation est heureusement rare avec les
  482.                compilateur modernes.
  483.  
  484.                *  Au lancement,  Gpro marque  un  temps  d'arret,  c'est
  485.                normal,  le CPU mouline pendant environ 1/6 de seconde  (
  486.                insupportable comme attente!!  ) avant de rendre la main.
  487.                C'est  parce que le chargement  est  si "lent" qu'il  est
  488.                difficile à tracer.
  489.  
  490.         Enfin,  si Gpro marche sur une machine,  il marchera sur toutes.
  491.         Si  le soft est compatible ( ie avec les reserves  ci-dessus  ),
  492.         alors il n'y aura pas de blèmes.
  493.  
  494.         Gpro a été testé sur plusieurs systemes et configurations
  495.         différentes:
  496.                 * Processeurs: 386 DX, 486 DX, i486DX2, AMD 486DX2,
  497.                   Pentium P90;
  498.                 * Mémoires: 80ns, 70ns, 4Mo -> 32 Mo;
  499.                 * BIOS: AMI, Award, Phoenix;
  500.                 * Bus: ISA, VLB, PCI;
  501.                 * OS: MSDOS 6.0, MSDOS 6.2, MSDOS 6.22, IBM DOS 6.0;
  502.                 * Configurations: EMM386, HIMEM etc...
  503.  
  504.  
  505.  
  506.  
  507.         Bibliographie
  508.        └─────────────┘
  509.  
  510.        Pour programmer Gpro, il m'a fallu pas mal de docs techniques
  511.        dont:
  512.  
  513.        [1] "LA BIBLE PC", Michael TISCHER, Editions Micro Application
  514.                 ISBN:2-86899-663-9
  515.           Pas mal du tout pour les structures DOS, un résumé des
  516.           interruptions et tout ce qui concerne la programmation systeme
  517.           sur PC
  518.  
  519.        [2] "TURBO ASSEMBLER", Memento et Guide du programmeur, BORLAND
  520.           Pour les trous de mémoires, l'optimisation et les OpCodes
  521.  
  522.        [3] "Interrupt List R41", Ralf Brown, ralf@telerama.lm.com
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.   26 Octobre 1994    -    Gpro 1.05                                     9.
  530.  
  531.  
  532.  
  533.  
  534.  
  535.           Indispensable pour tout connaitre sur les interruptions et le
  536.           DOS.
  537.  
  538.        [4] "8086 Bugs list", Harald Feldmann,harald.feldmann@almac.co.uk
  539.  
  540.        [5] "Le Livre d'or PC", Martin ALTHAUS, Editions SYBEX
  541.                 ISBN:2-7361-0951-1
  542.                 original: ISBN:3-88745-263-1
  543.           Trés bien pour les cotés hardwares et purement techniques.
  544.  
  545.        [6] La série des "CD-ASC" du DP Tool Club
  546.          Une mine d'or pour le programmeur avide de renseignements
  547.          pointus, techniques ou peu répendus. Contient aussi gavé de
  548.          jeux pour calmer les nerfs...
  549.  
  550.        [7] "Plombeur 1.5" Permet de mettre une protection physique  sur
  551.            une disquette, à l'instar de protections type EVMOVE, mais en
  552.            shareware  !! Ici aussi l'utilisation  de  GPRO  s'impose  vu
  553.            qu'aucune  protection du logiciel n'est  prévue.   Contactez:
  554.            Pascal  Leuwers
  555.            52 Bd Basly
  556.            62670  Mazingarbe
  557.            France
  558.            Tel:+33-21-72-50-62
  559.  
  560.        [8] "Protect" Même chose  que  [7],  même  sanctions.
  561.            Chan  Piu Nicolas
  562.            28 rue Charles Montaland,  Bat 2
  563.            68100  Villeurbanne
  564.            France
  565.  
  566.        [9] Cette doc est tapée avec Breeze (c) Kevin Solway 1989-93.
  567.            Le source assembleur est tapé avec Professional Editor II
  568.            d'IBM.
  569.            Le code Pascal est fait avec Borland Pascal 7.
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.   26 Octobre 1994    -    Gpro 1.05                                    10.
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.         La minute légale
  605.        └────────────────┘
  606.  
  607.                                !! ATTENTION !!
  608.  
  609.         L'AUTEUR NE PEUT EN AUCUN CAS ETRE TENU RESPONSABLE DES DOMMAGES
  610.         CREES PAR L'UTILISATION DE GPRO. GPRO EST UN LOGICIEL LIVRE DANS
  611.         LE  SHAREWARE PAR GUILLAUME PERNOT.   TOUTE UTILISATION DE  GPRO
  612.         (INCLUANT  LE PROGRAMME ET LES DONNEES)  A DES FINS COMMERCIALES
  613.         (TELLES  QUE LA VENTE DE LOGICIELS TRAITES PAR  GPRO  ETC)  DOIT
  614.         FAIRE  L'OBJET  D'UN  ENREGISTREMENT  AUPRES  DE   L'AUTEUR   ET
  615.         L'ACQUITTEMENT DE LA SOMME DE 490 FF, CECI UNE FOIS POUR TOUTES,
  616.         PAR  LA PERSONNE  PHYSIQUE  OU  MORALE  BENEFICIANT  DES  VENTES
  617.         (EDITEUR OU PROGRAMMEUR). CE DROIT EST ENSUITE VALABLE A VIE, LA
  618.         PERSONNE  PHYSIQUE OU MORALE AINSI ENREGISTREE  POURRA  UTILISER
  619.         GPRO  AVEC TOUS LES LOGICIELS  QU'ELLE  DESIRE  DIFFUSER  ET  CE
  620.         AUTANT  DE FOIS QU'ELLE LE DESIRE.   AUCUN  DROIT  D'UTILISATION
  621.         RELATIF AUX VENTES OU AUX REVENUS N'EST DU.   BREF, VOUS  SORTEZ
  622.         LA  THUNE UNE FOIS POUR TOUTES ET ON EN PARLE  PLUS.   DANS   LE
  623.         CAS   D'UNE   UTILISATION   EN   VUE   DE   LA   DIFFUSION    EN
  624.         SHAREWARE,  LA LICENSE  FIXEE  ARBITRAIREMENT  A  90  FF  SUFFIT
  625.         QUELQUE SOIT LE LOGICIEL.   LA AUSSI JE VAIS QUAND MEME PAS VOUS
  626.         TAPER  DES RONDS SUR LE BOULOT QUE VOUS AVEZ FAIT,  QUAND  MEME.
  627.         BON,  SI LE PROGRAMME TRAITE PAS  GPRO  DOIT  ETRE  LIVRE  A  LA
  628.         COMMUNAUTE  INFORMATIQUE SOUS FORME DE FREEWARE  OU  TOUT  AUTRE
  629.         DISTRIBUTION  SANS REVENUS,  ALORS AUCUN DROIT  D'ENREGISTREMENT
  630.         N'EST REDEVABLE A L'AUTEUR. VOUS ME CROYEZ SI JE VOUS DIT QUE JE
  631.         COMMENCE  A AVOIR MAL AU PETIT DOIGT DROIT,  RIVE SUR LE SHIFT ?
  632.         DANS TOUS LES CAS, GPRO, DANS SON ENSEMBLE (PROGRAMME, DONNEE ET
  633.         DOCUMENTATIONS) REVIENDRA AU DOMAINE PUBLIC A COMPTER DU 31 AOUT
  634.         1996.  A PARTIR DE CETTE DATE, AUCUN DROIT D'UTILISATION NE SERA
  635.         REDEVABLE,  MAIS JE VOUS AVERTIS QUE  J'ACCEPTERAIS  ENCORE  LES
  636.         CHEQUES DE GENEREUX MECENES. PAR CONTRE, LES DROITS DU PROGRAMME
  637.         ET  DU SOURCE SERONT TOUJOURS  LA  PROPRIETE  DE  L'AUTEUR.  PAR
  638.         CONTRE,  L'AUTEUR NE POURRAIT ETRE  TENU  RESPONSABLE  DE  DEGAS
  639.         SUBITS A LA SUITE DE L'UTILISATION DE GPRO.
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.   26 Octobre 1994    -    Gpro 1.05                                    11.
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.         Le mot de la fin
  670.        └────────────────┘
  671.  
  672.         Gpro  m'a demandé pas mal de boulot.  En fait j'y  travaille  de
  673.         temps  en temps depuis 2  ans,  rajoutant  des  techniques,  des
  674.         ruses,  etc. La premiere version appelée PRO TEN ne traitait que
  675.         les  fichiers COM (pas génial,  quoi), mais  plantait  déjà  les
  676.         debuggeurs  en mode protégé  et les cartes debuggers  (Periscope
  677.         et  cie). Elle a remporté le  Grand  Prix  catégorie  Lycée  (eh
  678.         ouais,  ça fait longtemps...)  au concours internationnal  "Soft
  679.         Qui  Peut" de Poitier  en  Octobre  1992.
  680.         Pour les gars qui utilisent Gpro pour leurs logiciels freewares,
  681.         ça  serait cool qu'ils m'envoient leurs oeuvres ou du  moins  un
  682.         signe  de vie (une carte,   une lettre,  une vache...). Tiens au
  683.         fait,  si quelqu'un a ses entrées à l'Ecole des Mines de Nantes,
  684.         ce  serait  super  sympa  de  me  contacter  (pour  le  concours
  685.         1994-1995). Allez, au revoir !
  686.  
  687.  
  688.                                         GuILlaUmE
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.