Pinball crack

Description

"Pinball Crack (v1.51)" est un programme qui permet non pas de cracker un logiciel payant mais de "cracker" les scores du jeu Pinball inclut par défaut dans Windows(TM). C'est un logiciel ainsi donc tout à fait légal.

Programme fait en C (sans licence!) implémentant les résultats de l'étude que j'avais fait sur le fonctionnement du système des scores du jeu Pinball et inclue dans le ZIP (fichier PDF).

Plus d'informations dans le fichier "Lisezmoi.txt" ;)

Source / Exemple :


/*
	Pinball Crack v1.50

	Programme pour modifier et créer des scores personnalisés sous Pinball.

	PS : Merci à -ed- du SiteDuZero pour le nettoyage et l'optimisation du code !

  • /
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "fonctions.h" #define TAILLE 100 #define TAILLE_MAX (5 * TAILLE) #define TITRE system ("title Pinball Crack 1.51") struct data { char nom[TAILLE]; long score; }; /* Déclaration des fonctions */ /* Calcule la valeur ASCII de la chaîne de caractères reçue */ static long valeurASCII (const char *chaine) { /* Déclaration des variables */ long nombreCaracteres = 0, valeurASCII = 0; char caractereActuel = 0; do { /* Prends le caractère situé dans la chaîne */ caractereActuel = chaine[nombreCaracteres]; /* Prends la valeur ASCII du caractère et l'additionne au contenu de la variable */ valeurASCII += caractereActuel; /* Incrémente la variable définissant la position dans la chaîne de 1 */ nombreCaracteres++; } /* On boucle tant qu'on n'est pas arrivé à "\0" */ while (caractereActuel != '\0'); /* Retourne le contenu de la variable dans main */ return valeurASCII; } static void creerFichier (struct data const *p_data, long valeur) { char const *fname = "scores.reg"; FILE *fichier = NULL; /* Ouvre et/ou créé le fichier */ fopen_s (&fichier, fname, "w+"); /* Vérifie si le fichier s'est bien ouvert */ if (fichier != NULL) { /* Écrit le fichier "scores.reg" */ fprintf (fichier, "Windows Registry Editor Version 5.00\n\n[HKEY_CURRENT_USER\\Software\\Microsoft\\Plus!\\Pinball\\SpaceCadet]\n"); fprintf (fichier, "\"Table Version\"=dword:00000001\n"); fprintf (fichier, "\"Table Exe\"=\"C:\\\\Program Files\\\\Windows NT\\\\Pinball\\\\PINBALL.EXE\"\n"); fprintf (fichier, "\"Table Name\"=\"Cadet de l'espace\"\n"); { int i; for (i = 0; i < 5; i++) { struct data const *p = p_data + i; fprintf (fichier, "\"%d.Name\"=\"%s\"\n", i, p->nom); fprintf (fichier, "\"%d.Score\"=\"%ld\"\n", i, p->score); } } fprintf (fichier, "\"Verification\"=\"%ld\"\n", valeur); /* Ferme le fichier précédemment ouvert */ fclose (fichier); } else { /* Affiche un message d'erreur en cas d'échec d'ouverture du fichier */ printf ("Impossible d'ouvrir ou d'enregistrer le fichier \"%s\" !\n\n", fname); } } int main (void) { /* Déclaration et initialisation de variables */ struct data data[5] = { {{0}} }; char global[TAILLE_MAX] = { 0 }; long valeur = 0; /* Met la fenêtre de commande en couleur */ system ("color 1f"); /* Modifie le titre de la fenêtre */ TITRE; printf("Information\n===========\n\n"); printf("Pinball Crack calculera la somme de controle des scores du jeu de Pinball et creera un fichier .reg qu'il suffira de lancer pour modifier les scores du jeu.\n\n"); system("PAUSE"); system("cls"); /* Demande les noms et scores des joueurs */ { int i; for (i = 0; i < 5; i++) { printf ("Entrer le nom du joueur %d : ", i + 1); vgets (data[i].nom, sizeof data[i].nom); printf ("Entrer le score du joueur %d : ", i + 1); get_i (&data[i].score); } } /* Si les variables de score n'ont pas de valeurs, alors il les définità -999 */ { int i; for (i = 0; i < 5; i++) { if (data[i].score == 0) { data[i].score = -999; } } } /* Concatène les noms des joueurs dans une chaîne globale */ { int i; for (i = 0; i < 5; i++) { strcat_s(global, sizeof data[i].nom , data[i].nom); } } /* Calcule la valeur ASCII de la chaîne globale (cf. fonction ci-après) */ valeur = valeurASCII (global); /* Calcule la valeur totale de la somme de contrôle */ { int i; for (i = 0; i < 5; i++) { valeur += data[i].score; } } /* Créé le fichier "scores.reg" */ creerFichier (data, valeur); /* Efface ce qu'il y a à l'écran */ system ("cls"); /* Affiche la somme de contrôle */ printf ("La somme de controle est %ld\n\n", valeur); printf ("Appuyez sur une touche pour quitter..."); /* Mise en pause du programmme */ system ("PAUSE > nul"); return 0; } /* 23 comments processed by CMT2 1.0 (c) ED 2007 */

Conclusion :


Je me suis bien amusé à faire ce programme dont le but était donc d'implémenter ce que j'avais trouvé ^^

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.