En fait, j'ai une autre histoire:
Quelques années après ma FCopy "succès" de l'histoire, j'ai été approché par quelqu'un qui m'a demandé si je pouvais craquer une machine à sous du logiciel.
C'était en Allemagne, où presque tous les pub eu un ou deux de ceux-ci: Vous souhaitez jeter de l'argent dans ce qui équivaut à environ un trimestre NOUS, puis elle tournerait à trois roues et si tu as de la chance avec un modèle, vous pouvez avoir le choix de "quitte ou double" votre victoire sur le prochain jeu, ou d'obtenir le gain actuel. Le but du jeu est d'essayer de doubler votre gain à quelques reprises jusqu'à ce que vous obtenez dans la "série" mode où tout réussir à gagner, de peu d'importance, vous obtiendrez un grand paiement (d'environ 10 fois vos dépenses par match).
La difficulté était de savoir quand double, et quand ne pas. Pour un "outsider" c'était complètement au hasard, bien sûr. Mais il s'est avéré que ceux-allemand de machines ont été à l'aide de simples pseudo-aléatoires tables dans leur Rom. Maintenant, si vous avez vu le jeu de machine pour quelques tours, vous auriez pu comprendre où ce "hasard le pointeur de la table" a été et de prévoir le prochain mouvement. De cette façon, un joueur de savoir quand double et quand passer, ce qui l'amène finalement à la "grande série de victoire".
Maintenant, c'était déjà une chose courante lorsque cette personne s'est approché de moi. Il y avait une scène underground qui a eu accès à la Rom dans ces machines, trouver les tables et créer des logiciels pour les ordinateurs de type C-64 à utiliser pour la prédiction de la machine déplace suivant.
Puis est venu un nouveau type de machine, mais, qui utilise un algorithme différent: au Lieu d'utiliser des pré-calc avais tables, il a fait quelque chose d'autre, et aucun des résidents des craquelins pouvait comprendre cela. Donc, j'ai été approché, qui est connu comme une sorte de génie depuis mon FCopy renommée.
Je me suis donc la Rom. 16KO, comme d'habitude. Aucune information sur ce qu'elle fait et comment cela a fonctionné que ce soit. J'étais sur mon propre. Même le code n'a pas l'air familier (je savais 6502 et 8080 alors uniquement). Après quelques recherches et demander, j'ai trouvé qu'il était un 6809 (que j'ai trouvé pour être le plus beau de 8 bits PROCESSEUR d'exister, et qui a des analogies avec le PROCESSEUR 680x0 conception, ce qui est beaucoup plus linéaire que la famille x86 instructions du gâchis).
En ce moment, j'avais déjà un 68000 (j'ai travaillé pour la société "Gepard Ordinateur" qui a construit et vendu une machine de ce type, avec son propre développeur de l'OS et de, tous) et a été dans la programmation, Modula-2. J'ai donc écrit un désassembleur pour le 6809, celui qui m'a aidé avec le reverse engineering par trouver des sous-routines, sauts, etc. Lent, j'ai une une idée de l'écoulement de contrôle de la machine à sous du programme. Finalement, j'ai trouvé un code qui ressemblait à un mathématiques de l'algorithme et il m'est apparu que ce pourrait être l'aléatoire de la génération de code.
Comme je n'ai jamais eu une éducation formelle dans les sciences de l'informatique, jusqu'alors je n'avais aucune idée de comment un randomgen à l'aide de mul, d'ajouter et de mod travaillé. Mais je me souviens avoir vu quelque chose mentionné dans un Modula-2 livre et on se demande alors ce que c'était.
Maintenant, j'ai pu rapidement trouver le code qui ferait appel de cette randomgen et identifier les "événements" de plomb à une randomgen itération, ce qui signifie que je savais comment prédire les prochaines itérations et leurs valeurs au cours d'un match.
Ce qui restait était de comprendre la position actuelle de la randomgen. Je n'avais jamais été bon avec les choses abstraites telles que l'algèbre. Je connaissais quelqu'un qui a étudié les mathématiques et a été un programmeur trop, cependant. Quand je l'ai appelé, il a rapidement su résoudre le problème et quabbled beaucoup de choses sur comment de simples il serait de déterminer les randomgen de la valeur de départ. Je n'ai rien compris. Eh bien, j'ai compris une chose: Le code pour accomplir cela prendrait beaucoup de temps, et qu'un C-64, ou toute autre 8 bits ordinateur prendrait des heures si pas des jours pour elle.
Ainsi, j'ai décidé de lui offrir 1000 DM (qui a beaucoup d'argent pour moi à l'époque) s'il pouvait m'écrire une routine assembleur 68000. Ne lui a pas fallu longtemps et j'ai eu le code que j'ai pu tester sur mon 68000. Il a fallu généralement entre 5 et 8 minutes, ce qui est acceptable. Si j'étais presque là.
Il encore nécessaire un portable 68000 de la pub où la fente de la machine. Mon Gepard ordinateur était clairement pas le type d'ordinateur portable. Heureusement, quelqu'un d'autre, je savais en Allemagne produites ensemble 68000 ordinateurs sur un petit circuit imprimé. Pour les I/O qu'il ne devait série de communications (RS-232) et un port parallèle (Centronics était la norme de l'époque). Je pourrais accrocher quelques 9V bloc battieries pour le faire fonctionner. Puis j'ai acheté une Forte ordinateur de poche, qui avait un caoutchouc clavier et une seule ligne de 32 caractères d'affichage. Fonctionnant sur piles, ce qui était mon terminal. Il a une interface RS-232 connecteur qui j'ai connecté à l'68000 conseil d'administration. La Forte avait aussi une sorte de mémoire non volatile, ce qui m'a permis de stocker le 68000 aléatoire-logiciel de craquage sur la Forte, de les transférer à la demande sur le 68000, qui a ensuite calculé la valeur de départ. Enfin, j'ai eu un petit Centronics imprimante qui imprime étroites de papier thermo (qui était de la taille de ce enregistreuses utiliser pour imprimer des reçus). Par conséquent, une fois que le 68000 eu les résultats, il serait d'envoyer une ligne de résultats pour les jeux à venir sur la machine à sous de la de Sharp, qui l'a imprimé sur le papier.
Donc, pour vider une de ces machines à sous, vous souhaitez travailler avec deux personnes: Vous commencez à jouer, écrire ses résultats, on avait le minimum de nombre de matchs requis pour la graine de calcul, l'un de vous serait aller à la voiture garée à l'extérieur, tournez sur le Sharp, saisir les résultats, il aurait le 68000 hochet pour 8 minutes, et il en est sorti une liste imprimée de jeu à venir s'exécute. Alors tout ce que vous besoin, c'était ce petit bout de papier, le ramener à votre copain, qui a gardé la machine occupé, aligner les résultats obtenus avec l'impression et pas plus de 2 minutes plus tard, vous avez été "surpris" à gagner tous les temps 100s de la série. Vous pouvez jouer ces jeux 100, pratiquement la vidange de la machine (et si la machine était vide avant les 100 matchs ont été joués, il avait le droit d'attendre qu'elle soit remplie de nouveau, peut-être même revenir le lendemain, alors que la machine est arrêtée jusqu'à ce que vous est venu à l'arrière).
Ce n'est pas Las Vegas, donc, si vous voulez seulement obtenir environ 400 DM d'une machine de cette façon, mais c'était rapide et sûr de l'argent, et c'était passionnant. Certains pub propriétaires nous soupçonné de tricherie, mais n'avait rien contre nous en raison des lois à l'époque, et même si certains ont appelé la police, la police a été en faveur d'entre nous).
Bien sûr, la fente entreprise de fabrication de vite eu vent de cela et a essayé de contrebalancer, la désactivation de ces machines jusqu'à ce que des ROMs ont été installés. Mais les premières fois, ils ont seulement changé la randomgen de nombres. On n'avait qu'à s'emparer de la nouvelle Rom, et il m'a fallu quelques minutes pour trouver les nouveaux numéros et de les mettre en œuvre dans mon logiciel.
Donc, cela a duré un certain temps au cours de laquelle moi et des amis parcouru thru pubs de plusieurs villes en Allemagne à la recherche de ces machines seulement nous avons pu craquer.
Finalement, cependant, le fabricant de machine a appris comment "réparer": Jusque-là, la randomgen a été élevé uniquement à certaines périodes, par exemple, quelque chose comme 4 fois pendant la lecture, et une fois de plus par le joueur, la pression du "quitte ou double" bouton.
Mais ensuite, ils ont enfin changé de sorte que le randomgen en permanence être interrogée, en ce sens que nous n'étions plus en mesure de prédire la prochaine valeur de semences exactement à l'heure de la pression de la touche.
C'était la fin de celui-ci. Encore, faire l'effort d'écrire un désassembleur juste pour cette seule fissure, trouver la clé de routines de 16 KO de 8 bits code de CPU, de déterminer inconnu algorithmes, d'investir beaucoup d'argent pour payer quelqu'un pour développer du code, je ne comprenais pas, à trouver des éléments pour un portable de haute vitesse de l'ordinateur impliquant "à l'aveugle" 68000 CPU avec le Tranchant comme un terminal et de l'imprimante pour la pratique de sortie, et puis en fait la vidange de la machines à moi-même, a été l'une des choses les plus excitantes que j'ai jamais fait avec mes compétences en programmation.