Crackme erstellen mit einem einfachen Beispiel

Hallo liebe HaBo'ler.
Ich habe ein Crackme-Beispiel erstellt für Neulinge unter uns.
Hierbei geht es um das einfache Verständniss vom Crackme somit ist das Programm so kurz wie möglich zusammengefasst worden. Schriftfarbe, Hintergrundfarbe oder eine grafische Oberfläche sind grunddessen nicht vorhanden.
Dies ist mein erster Thread, falls ihr Kritik ausüben wollt bitte berücksichtigen ;)
Wenn es noch Fragen gibt stehe ich gern zur Verfügung.


Kleine Infos bezüglich der Codierung:

blaue Schriftfarbe: Kommentare, keinerlei Einfluss auf den Ablauf und ist nicht sichtbar für den Benutzer. Dient nur zum Verständniss des Ablaufs (PS:sehr hilfreich wenn ihr größere Programme schreibt :))

rote Schriftfarbe: Text, der für den Benutzer sichtbar ist. Hat ebenfalls keinen Einfluss auf die Funktion.

schwarze Schriftfarbe: Funktionen zum Beispiel Bibliothek einfügen, Variable definieren usw.

...
...
Sooo lassts euch schmecken

gruß liang ;)

Code:
[COLOR=RoyalBlue]//CRACKME 1.0 liang[/COLOR]
#include <iostream.h>

float w=0.1; [COLOR=RoyalBlue]//Schleifenvariable[/COLOR]
int x; [COLOR=RoyalBlue]//Passwortvariable[/COLOR]
int main()
{
    while(w !=1.0) [COLOR=RoyalBlue]//endlos-Schleife gesetzt d.h beliebig viele Versuche[/COLOR]
    {
    [COLOR=Red][COLOR=Black]cout<<[/COLOR]"***********************************************************************"[COLOR=Black]<<endl;[/COLOR]
    [COLOR=Black]cout<<[/COLOR]"******************************CRACKME**********************************"[COLOR=Black]<<endl;[/COLOR]
    [COLOR=Black]cout<<[/COLOR]"***********************************************************************"[COLOR=Black]<<endl;[/COLOR][/COLOR]
    cout<<endl;
    [COLOR=Red][COLOR=Black]cout<<[/COLOR]"Bitte Passwort eingeben:";[/COLOR]
    cin>>x;
    if(x==1234) [COLOR=RoyalBlue]//Somit wird unser Passwort bestimmt,doppel = ist notwendig sonst versteht unser Compiler die Funktion nicht als Vergleich, sondern als Gleichsetzung von unserer x-Variable und dem Passwort.[/COLOR]
    {
[COLOR=RoyalBlue]//Falls die Bedingung erfüllt ist (in diesem Beispiel, wenn der Cracker 1234 eingetippt hat) erscheint folgendes:[/COLOR]
    [COLOR=Red][COLOR=Black]cout<<[/COLOR]"Resultat:Du hast es geschafft"[COLOR=Black]<<endl;[/COLOR][/COLOR]
    }
    else
    {
[COLOR=RoyalBlue]//Falls die Bedingung nicht erfüllt ist (wenn der Cracker nicht 1234 eingetippt hat erscheint folgendes:[/COLOR]
    [COLOR=Red][COLOR=Black]cout<<[/COLOR]"Resultat: Falsch, versuch es erneut!"[COLOR=Black]<<endl;[/COLOR][/COLOR]
    }
     w+=0.1;
    }
}
 
Zuletzt bearbeitet:
Ich finds ja schön und gut, das du hier ein Tutorial für ein Crackme reinstellst aber:
Code:
int w; [COLOR=RoyalBlue]//Schleifenvariable[/COLOR]
int x; [COLOR=RoyalBlue]//Passwortvariable[/COLOR]
Wieso nimmst du da keine lokale Variablen?

Code:
for(w=0;w<9;w++) [COLOR=RoyalBlue]//endlos-Schleife gesetzt d.h beliebig viele Versuche[/COLOR]
Wieso soll das eine Endlos-Schleife sein?
 
Ich finds ja schön und gut, das du hier ein Tutorial für ein Crackme reinstellst aber:

Wieso nimmst du da keine lokale Variablen?


Wieso soll das eine Endlos-Schleife sein?



also,
du deiner frage bezüglich der endlos-schleife:
int w; ist deine variable für die schleife.
w=0 <- dein startwert.
w<9 <- dein endwert (wenn w kleiner ist als 9 soll es aufhören sich zu wiederholen).
w++ <- es wird hochgezählt.
w wird durch ausführen nicht größer, da nix addiert wird während es einmal durchläuft.
falls du zb nur 5 versuche haben willst musst du in deinem hauptprogramm unten w=w+1; hinzufügen, somit erreichst du dass es hochzählt und am endwert ankommt.du kannst die anzahl der versuche je nach belieben ändern, durch vertauschen vom end od startwert und ebenso mit deiner w=w+x gleichung

und erklär mir mal bitte was du mit lokalen variablen meinst...etwa andere datentypen?...falls ja kann ich dich beruhigen denn die wahl deines datentyps ist variabel:) du musst halt nur drauf achten dass du es deklarierst..gibt folgende typen: unsigned char, char, short int, unsigned int, int, unsigned long, enum, long, float, long double.
falls du die genauen zahlen und größenbereich wissen möchtest sag bescheid, ich hoffe das war die richtige antwort auf deine frage oO..
 
Zuletzt bearbeitet:
ahja falls du dran zweifelst dass es ne endlos-schleife ist,
kannste dich selbst davon überzeugen indem du den code einfach in deinen compiler reinkopierst und ausführst

mfg liang
 
int w; ist deine variable für die schleife.
w=0 <- dein startwert.
w<9 <- dein endwert (wenn w kleiner ist als 9 soll es aufhören sich zu wiederholen).
w++ <- es wird hochgezählt.
w wird durch ausführen nicht größer, da nix addiert wird während es einmal durchläuft.

w=0 // Startwert
w<9 // Mach weiter, solange w kleiner als 9 ist
w++ // Bei jeden Durchlauf um 1 inkrementieren

Ist schon richtig was AaFreak zu dir sagte :)

Zum Thema lokale Variablen: du deklarierst die Variablen außerhalb der Funktion in der sie genutzt werden, das ist unnötig. w könntest du zum Beispiel in der for-Anweisung selber deklarieren... und so weiter...
 
w++ <- es wird hochgezählt.
w wird durch ausführen nicht größer, da nix addiert wird während es einmal
durchläuft.
Ähm du sagst es ja selber daß hochgezählt wird. Das ist keine Endlosschleife.
falls du zb nur 5 versuche haben willst musst du in deinem hauptprogramm unten w=w+1; hinzufügen, somit erreichst du dass es hochzählt und am endwert ankommt.du kannst die anzahl der versuche je nach belieben ändern, durch vertauschen vom end od startwert und ebenso mit deiner w=w+x gleichung
hä? Wenn man eine andere Anzahl der Versuche haben will sollte man das direkt in der for-Anweisung machen.
und erklär mir mal bitte was du mit lokalen variablen meinst...etwa andere datentypen?
Du deklarierst die Variblen ausserhalb von der main, ergo sind die Variablen global deklariert. Das ist halt unsauber. In dem Fall würde man die Variablen in der main deklarieren.
 
Lokale Variablen sind in der Funktion deklariert, nicht außerhalb.
Code:
int main() {
   int w;
   int x;
}

Code:
for (w = 0; w < 9; w++) {
   // Mach was
}
Ist keine Endlos-Schleife, sie wird von w = 0 bis 8 durchlaufen, also 9 mal.

Edit: Oh zu spät.
 
Also. Es tut mir leid das war wirklich ein leichtsinnsfehler:)
Nun ist es eine Endlos Schleife ich hab den Zähler einfach auf minus gestellt er kommt niemals auf 8 an. Endlos-Schleifen kann man beliebig kreieren.
 
Das ist leider auch falsch. Wenn du bei -2.147.483.648 angekommen bist und nochmal dekrementierst hüpft er auf +2.147.483.647 und das ist nunmal > 9.

Edit: Sorry, kommt natürlich drauf an wie der int definiert ist. 2 Byte oder 4 Byte
 
Zu der Frage mit den lokalen Variablen:
Wenn mein Programm eine einfache Funktion hat dann deklariere ich die Variablen global, hat keinen Sinn ist einfach so angeboren ;). Da es klappt ist das kein Problem meiner Meinung nach. Problematisch wirds wenn mein Programm mehrere Funktionen haben sollte sprich Unterprogramme.
 
ohje immernoch keine endlos schleife?...ich hab da 30x oder so draufgeklickt und ging davon aus dass es auch mit minus funktioniert *kotz*
 
Zurück
Oben