Crackme1 [SOLVED]

@ SLDZ

Gib mir doch ma deine ICQ, MSN oder sonst was... dan können wir uns über Delphi unterhalten :D

Interessant... Seit wir hier Posten, is in der CrackMes abteilung wieder was los...

Vorhin war ja seit 19.12.07 nix neues mehr gekommen... :D
 
Ich hätte nicht gedacht, dass das Interesse an diesem Crackme noch so groß ist. Naja hier hast du den Quellcode. Jedoch habe ich dieses Crackme damals sehr schlampig programmiert, da ich zu diesem Zeitpunkt selber noch sehr wenig Ahnung von C++ hatte.

Code:
void CCrackme1Dlg::OnCheck()
{
	UpdateData(TRUE);
	CString Hex1,Hex2,Hex3,Hex4,ASCII1,ASCII2,ASCII3,ASCII4;
	CString Final_1, Final_2, Final_3, Final_4, Final_1f, Final_2f, Final_3f, Final_4f, Final_1ff, Final_2ff, Final_3ff, Final_4ff, Final;
	int Länge = mstr_Name.GetLength();

	int zahl = 0;
	int checkserial = ((mstr_Name[zahl])*(2,8));
	int serial = (checkserial * 5);
	int serial_1 = 1;
	int serial_2 = 1;
	int serial_3 = 1;
	int serial_4 = 1;

	// ASCII-Wert
	for (zahl; zahl <= Länge; zahl++)
	{
		checkserial = ((mstr_Name[zahl])*(2,8));
		serial += checkserial;
	}
	ASCII1.Format("%d",serial);
	ASCII2.Format("%d",(serial*2));
	ASCII3.Format("%d",(serial*3));
	ASCII4.Format("%d",(serial*4));

	// Hex-Wert
	Hex1.Format("%x",serial);
	Hex2.Format("%x",(serial*2));
	Hex3.Format("%x",(serial*3));
	Hex4.Format("%x",(serial*4));

	// 1-Block
	Final_1f = ASCII1[0];
	Final_2f = Hex1[1];
	Final_3f = ASCII1[2];
	Final_4f = Hex1[3];
	Final_1ff = Final_1f + Final_2f + Final_3f + Final_4f;

	// 2-Block
	Final_1f = ASCII2[0];
	Final_2f = Hex2[1];
	Final_3f = ASCII2[2];
	Final_4f = Hex2[3];
	Final_2ff = Final_1f + Final_2f + Final_3f + Final_4f;

	// 3-Block
	Final_1f = ASCII3[0];
	Final_2f = Hex3[1];
	Final_3f = ASCII3[2];
	Final_4f = Hex3[3];
	Final_3ff = Final_1f + Final_2f + Final_3f + Final_4f;

	// 4-Block
	Final_1f = ASCII4[0];
	Final_2f = Hex4[1];
	Final_3f = ASCII4[2];
	Final_4f = Hex4[3];
	Final_4ff = Final_1f + Final_2f + Final_3f + Final_4f;

	Final = Final_1ff + "-" + Final_2ff + "-" + Final_3ff + "-" + Final_4ff; 

	if (mstr_Serial == Final)
	{
		MessageBox(_T("Der Serial ist richtig!"),_T("Geschafft"),NULL);
	}
	else
	{
		MessageBox(_T("Der Serial ist falsch!"),_T("Error"),NULL);
	}
}

Den Algorithmus kannst du dir auch in Ollydbg anschauen. Guck dir dazu mal folgende Segmente genauer an...
Code:
00401B14   . 68 30984300    PUSH Crackme1.00439830                   ;  ASCII "%d"
00401B19   . 52             PUSH EDX
00401B1A   . E8 A1160000    CALL Crackme1.004031C0
00401B1F   . 8D3C36         LEA EDI,DWORD PTR DS:[ESI+ESI]
00401B22   . 57             PUSH EDI
00401B23   . 8D4424 58      LEA EAX,DWORD PTR SS:[ESP+58]
00401B27   . 68 30984300    PUSH Crackme1.00439830                   ;  ASCII "%d"
00401B2C   . 50             PUSH EAX
00401B2D   . E8 8E160000    CALL Crackme1.004031C0
00401B32   . 8D2C76         LEA EBP,DWORD PTR DS:[ESI+ESI*2]
00401B35   . 55             PUSH EBP
00401B36   . 8D4C24 60      LEA ECX,DWORD PTR SS:[ESP+60]
00401B3A   . 68 30984300    PUSH Crackme1.00439830                   ;  ASCII "%d"
00401B3F   . 51             PUSH ECX
00401B40   . E8 7B160000    CALL Crackme1.004031C0
00401B45   . 8D1CB5 0000000>LEA EBX,DWORD PTR DS:[ESI*4]
00401B4C   . 53             PUSH EBX
00401B4D   . 8D5424 68      LEA EDX,DWORD PTR SS:[ESP+68]
00401B51   . 68 30984300    PUSH Crackme1.00439830                   ;  ASCII "%d"
00401B56   . 52             PUSH EDX
00401B57   . E8 64160000    CALL Crackme1.004031C0
00401B5C   . 56             PUSH ESI
00401B5D   . 8D8424 8C00000>LEA EAX,DWORD PTR SS:[ESP+8C]
00401B64   . 68 20954300    PUSH Crackme1.00439520                   ;  ASCII "%x"
00401B69   . 50             PUSH EAX
00401B6A   . E8 51160000    CALL Crackme1.004031C0
00401B6F   . 57             PUSH EDI
00401B70   . 8D8C24 9400000>LEA ECX,DWORD PTR SS:[ESP+94]
00401B77   . 68 20954300    PUSH Crackme1.00439520                   ;  ASCII "%x"
00401B7C   . 51             PUSH ECX
00401B7D   . E8 3E160000    CALL Crackme1.004031C0
00401B82   . 83C4 48        ADD ESP,48
00401B85   . 55             PUSH EBP
00401B86   . 8D5424 54      LEA EDX,DWORD PTR SS:[ESP+54]
00401B8A   . 68 20954300    PUSH Crackme1.00439520                   ;  ASCII "%x"
00401B8F   . 52             PUSH EDX
00401B90   . E8 2B160000    CALL Crackme1.004031C0
00401B95   . 53             PUSH EBX
00401B96   . 8D4424 5C      LEA EAX,DWORD PTR SS:[ESP+5C]
00401B9A   . 68 20954300    PUSH Crackme1.00439520                   ;  ASCII "%x"
00401B9F   . 50             PUSH EAX
00401BA0   . E8 1B160000    CALL Crackme1.004031C0

und diese Funktion fügt die einzelnen Blöcke zusammen.

Code:
00402B73  |. E8 88010000    CALL Crackme1.00402D00                    <-- Funktion mit F7 folgen
00402B78  |. 83C4 14        ADD ESP,14
00402B7B  |. 8BC6           MOV EAX,ESI
00402B7D  |. 8B4C24 10      MOV ECX,DWORD PTR SS:[ESP+10]
00402B81  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00402B88  |. 59             POP ECX
00402B89  |. 5F             POP EDI
00402B8A  |. 5E             POP ESI
00402B8B  |. 83C4 10        ADD ESP,10
00402B8E  \. C3             RETN
 
Vielen Dank....

Ja das Interesse is so gross, weils das erste war, welches ich lösen konnte...

Nich falsch verstehen :D

Hmmm... wenn ich nun noch n bissel besser wär in C++, dan würde hier noch ein KeyGen hängen. Aber dafür hats nicht mehr gereicht...

Aber ich werds sicher noch versuchen :D

////////////

Fast vergessenn

name: hedie
serial: 8048-1040-2078-3090

Der keygen ist unterwegs :D
 
Es hat zwar nicht direkt mit diesem CrackMe was zu tun, jedoch tritt das Problem, das ich habe auch bei diesem CrackMe auf.
Bei vielen Exen tritt in OllyDbg ein Fehler auf (auch als Screen im Anhang):
Code:
Access violoation when writing to [00000010] - use Shift+F7/F8/F9 to pass exception to program
Ergebnis meiner Suche war, dass der Fehler nur bei gepackte exen auftritt.
Jedoch ist doch dieser CrackMe nicht gepackt.
Und wenn ich mit Shift+F7 weitermache und versuche diese exe zu patchen, ist die neue exe korrupt.
Das passiert mir irgendwie öfter bei CrackMe's, die gar nicht gepackt sind.

Ach ja um nicht ganz OT zu bleiben (fishing is ja da kein prob):
gbNiNjA
9380-1730-2b50-3f70


edit1:
Original von darkhedie
mach mal anstelle von shift + F7 shift + F9
Im Grunde ist das egal ob ich da F7 F8 oder F9 drücke, merke da keinen Unterschied.
Die Meldung kommt trotzdem jedes Mal wenn ich solche Exen in OllyDbg öffne..
 
Kann deinen Keygen nicht starten:

"Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist. Zur Problembehebung sollten sie die Anwendung neuinstallieren."
 
hi!


Also, hier ist Patchen und serial fishing leicht....
( greeter - 1718-2f20-3638-4e40)


Aber wie kann ich einen keygen dafür schreiben??

greetz,
greeter
 
Juhu. Ich habe es auch geschafft :) Mein 2. Versuch in Olly. Daten:

Name: PMTheQuick
Serial: 1a88-2460-3f58-4930

Noch eine Frage: Wie macht ihr die Keygens? Bzw. schaut ihr euch etwa den gesamten Code Zeile für Zeile an?

Gruss
PMTheQuick ;)
 
Zurück
Oben