KeygenMe

  • Themenstarter Themenstarter Xylon
  • Beginndatum Beginndatum
X

Xylon

Guest
:P Ich hab auch mal wieder eins für euch...
Ist eigentlich ziemlich einfach. Der Algo sollte keine Probleme bereiten und lässt sich mit dem Windowstaschenrechner nachrechnen. Das eigentliche Problem dieses KeygenMe's liegt ganz wo anders ^^ . Ich habe mir etwas zu nutze gemacht was man fast in jedem zweiten CrackMe sieht - jedoch nicht in dieser Form.

Sprache: VB 6
-Nicht gepackt
Ziel: Sniffen/Keygen
Regeln: Patchen innerhalb der Keyroutine ist verboten.

Viel Spaß
 
Das Keygenme ist "unsichtbar" - Bug or feature? Aber so "wiklich" unsichtbar, lässt sich auch nicht durch das hinzufügen von "Visible"-Status sichtbar machen. Dafür aber verschieben usw - bloß sieht man nichts, so dass ich auf einen Fehler in der Zeichenroutine tippen würde (liegt definitiv nicht an "SetLayeredWindowAttributes" )
 
Das Keygenme ist "unsichtbar" - Bug or feature?
Ich denke mal Feature, weil der MainWindow-Title heisst ja: "AppearMe/EnableMe/CrackMe".

...so dass ich auf einen Fehler in der Zeichenroutine tippen würde
Eventuell soll man die ja auch noch patchen. Da er ja nur ein patchen in der Keyroutine verbietet, lässt dies einen vermuten, dass man patchmässig woanders zu tun hat. :D Habe es mir noch nicht näher angeschaut. Aber wird vlt. auch mit Transparenz gespielt?
 
:P Richtig! Das crackme ist durchsichtig - kein Bug! Es ist nicht sonderlich schwer es wieder sichtbar zu machen, ich habe alles durchprobiert!
Tipp: Es gibt eine Routine die es immer wieder unsichtbar macht ( ich empfehle "Semi VB Compiler"!)
Nachdem man die Routine deaktiviert hat, ist der Rest relativ einfach...
Edit: Achso und auf den weg den ich gewählt hatte, kam ich nicht drum herum ein kleines Programm zu schreiben das mir dabei hilft.. alleine mit Olly könnte das schwer werden!
 
*Ich hasse VB*

Code:
#include <stdio.h>
#include <stdlib.h>

char * generateSerial(char *name)
{
	char *result = malloc(11);
	char tempName[6];
	int i,length = strlen(name);
	memset(tempName,0,6);
        memset(result,0,11);
	strncpy(tempName,name,3);
	memcpy(tempName+strlen(tempName),name+length-2,2);
	for( i = 0; tempName[i]; ++i ) {
		sprintf(result,"%s%02X",result,toupper(tempName[i])+3);
	}
	return result;
}

int main(int argc,char **argv)
{
	if( argc != 2 ) {
		printf("USAGE: %s <Name>",argv[0]);
		return 1;
	}
	char *serial = generateSerial(argv[1]);
	printf("%s\n",serial);
	free(serial);
	return 0;
}
Im Anhang ist noch das gefixte Crackme(Der andere Button auf dem Frame ist aktiviert, doch mit dem Frame sieht man die Eingabefelder nicht, daher ist der andere Button nicht sichtbar). Mit einem Lösungsweg halte ich mich noch etwas zurück, damit auch unerfahrenere noch ein bisschen Zeit haben.
 
alleine mit Olly könnte das schwer werden!
in Olly lassen sich wunderbar paar Sachen überschreiben:
Code:
 MOV EAX,DWORD PTR DS:[EDI]
 PUSH 2
 PUSH -2
 NOP
 NOP
 PUSH 0
 PUSH EAX
 CALL <KeygenMe.SetLayeredWindowAttributes>
und schon sieht man das Keygenme ;)
mit einem VBRessourcen Editor (z.B VBReformer) sollte sich der Rest editieren lassen. Per Hexeditor sollte man auch die Framesize ändern können. Ist aber trotzdem nicht mein Geschmack ;)
 
Ein Patch zur Laufzeit ist auch zu empfehlen :

00403D8C: 74 EB

00404180: 53 C2
00404181: 55 08
00404182: 56 00
Dann läuft der Crackme auch auf Win98.
 
Zurück
Oben