Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

crackme#7

Diskussion: crackme#7 im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo, hab mal wieder ein neues Crackme geschrieben. Lösung ist ein gültiges CD-Image + Keygen. Ist eigentlich nicht so ...

Antwort
Alt 04.04.08, 15:49   #1 (permalink)
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
crackme#7

Anzeige

Hallo,
hab mal wieder ein neues Crackme geschrieben. Lösung ist ein gültiges CD-Image + Keygen. Ist eigentlich nicht so schwer, nur bisschen Krypto und was zum Knobeln.
Viel Spaß!

PS:
Falls jemand wegen dem Anti-Debugger-Trick wütend sein sollte, den hab ich mir selbst ausgedacht :)
Auch CD-Images kann man mit einem Hexeditor manipulieren. Ich hab mein ISO-Testimage mit Nero erstellt (als Rekorder "Image Recorder" nehmen). Zum Testen virtuelles Laufwerk (z.B. DAEMON Tools/CloneCD) nehmen.

Angehängte Dateien
Dateityp: zip crackme7.zip (47,6 KB, 16x aufgerufen)
mucki ist offline   Mit Zitat antworten
Alt 04.04.08, 19:54   #2 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Also bei mir gibt es noch 'nen kleines Problem mit dem ISO(im Anhang). Der Code wird zwar richtig entschlüsselt, doch das Programm stürzt darauf hin ab. Ich hab das Ganze dann gedumpt und bisschen gepatcht, dass ich mir auch die Keyprüfung "live" ansehen kann. Im Anhang sind mein Image und ein Keygen.
Klasse CrackMe übrigens .
spoiler   

Name der CD(cM7...) und Dateilänge stimmen, ich sehe auch den Überprüfungsalgo, auch die Überprüfung nach der Entschlüsselung stimmt. user32.dll versucht kurz danach jedoch auf [ebx+2b] zuzugreifen, obwohl in ebx noch das kodierte base64-Zeug steht.(oder ist das ne geplante Schwierigkeit des CMs?)
Hier ist noch der Code des Keygens:
Code:
#include "windows.h"
#include "BigLib.h"
#include "CCRC32.h"
#include <iostream>
#include <string>


using namespace std;

int main(int argc,char **argv)
{
	
	CCRC32 c;
	c.Initialize();
	string name;
	cout << "Please enter your name: ";
	cin >> name;
	DWORD crc = c.FullCRC((unsigned char*)name.c_str(),name.length());
	char serial_t[9];
	sprintf(serial_t,"%x",crc);
	char serial[17];
	memset((void*)serial,0,17);
	for(int i=0;i<8;i++) {
		sprintf(serial,"%s%x",serial,serial_t[i]&0xff);
	}
	HBIG input = BigCreate(BIG_512,BIG_STRING,(DWORD)serial,16);
	HBIG d = BigCreate(BIG_512,BIG_STRING,(DWORD)"10001",16);
	HBIG n = BigCreate(BIG_512,BIG_STRING,(DWORD)"E903EF989D260FA9",16);
	BigPowMod(input,d,n);
	BigToString(input,serial,16);
	cout << serial << endl;
	return 0;
}
(Für eine GUI war ich zu faul)
Die CRC32-Berechnung ist von hier: http://www.networkdls.com/Software.Asp?Review=22
Je nach Zeit werde ich auch vielleicht ein Tutorial zu schreiben.
Angehängte Dateien
Dateityp: rar cm7.rar (45,1 KB, 8x aufgerufen)
Lesco ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 06.04.08, 13:49   #3 (permalink)
Themenstarter
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
Standard

Es freut mich, wenn es dir gefallen hat, jedoch funktioniert dein Keygen bei mir nicht. Hier ist mal meine Lösung.
Angehängte Dateien
Dateityp: zip solution.zip (49,9 KB, 8x aufgerufen)
mucki ist offline   Mit Zitat antworten
Alt 06.04.08, 16:28   #4 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Das ist seltsam, also bei mir funktioniert sowohl mein Keygen, als auch deiner, jedoch weder mein noch dein Image(Alles auf win2k) akzeptiert(beide Male der selbe Absturz). Also der Überprüfungsalgo sieht bei mir nach Entschlüsselung so aus:
Code:
0040144D  /$  8925 A8754000                        MOV DWORD PTR DS:[4075A8], ESP
00401453  |.  892D AC754000                        MOV DWORD PTR DS:[4075AC], EBP
00401459  |.  68 14764000                          PUSH t2.00407614
0040145E  |.  FF35 10764000                        PUSH DWORD PTR DS:[407610]
00401464  |.  E8 23010000                          CALL <t2.crc32>
00401469  |.  8BD8                                 MOV EBX, EAX
0040146B  |.  6A 32                                PUSH 32                                                                ; /Length = 32 (50.)
0040146D  |.  68 62774000                          PUSH t2.00407762                                                       ; |Destination = t2.00407762
00401472  |.  E8 1B080000                          CALL <JMP.&kernel32.RtlZeroMemory>                                     ; \RtlZeroMemory
00401477  |.  68 BE704000                          PUSH t2.004070BE                                                       ;  ASCII "E903EF989D260FA9"
0040147C  |.  68 CF704000                          PUSH t2.004070CF                                                       ;  ASCII "807DCE21717D22AD"
00401481  |.  68 62774000                          PUSH t2.00407762                                                       ;  ASCII "Y003M00="
00401486  |.  68 25764000                          PUSH t2.00407625
0040148B  |.  E8 70000000                          CALL t2.00401500
00401490  |.  68 62774000                          PUSH t2.00407762                                                       ;  ASCII "Y003M00="
00401495  |.  68 BA704000                          PUSH t2.004070BA                                                       ; |format = "%lx"
0040149A  |.  68 62774000                          PUSH t2.00407762                                                       ; |s = "Y003M00="
0040149F  |.  FF15 90604000                        CALL DWORD PTR DS:[<&msvcrt.sscanf>]                                   ; \sscanf
004014A5  |.  83C4 0C                              ADD ESP, 0C
004014A8  |.  A1 62774000                          MOV EAX, DWORD PTR DS:[407762]
004014AD  |.  33C3                                 XOR EAX, EBX
004014AF  |.  25 FFFFFF7F                          AND EAX, 7FFFFFFF
004014B4  |.  3D 0F270000                          CMP EAX, 270F
004014B9  |.  7F 36                                JG SHORT t2.004014F1
004014BB  |.  50                                   PUSH EAX                                                               ; /<%lu>
004014BC  |.  68 B6704000                          PUSH t2.004070B6                                                       ; |Format = "%lu"
004014C1  |.  68 DE144000                          PUSH t2.004014DE                                                       ; |s = t2.004014DE
004014C6  |.  E8 EF060000                          CALL <JMP.&user32.wsprintfA>                                           ; \wsprintfA
004014CB  |.  68 E8144000                          PUSH t2.004014E8                                                       ;  SE handler installation
004014D0  |.  64:FF35 00000000                     PUSH DWORD PTR FS:[0]
004014D7  |.  64:8925 00000000                     MOV DWORD PTR FS:[0], ESP
004014DE  |.  CC                                   INT3
004014DF  |.  CC                                   INT3
004014E0  |.  CC                                   INT3
004014E1  |.  CC                                   INT3
004014E2  |.  CC                                   INT3
004014E3  |.  B8 01000000                          MOV EAX, 1
004014E8  |$  64:8F05 00000000                     POP DWORD PTR FS:[0]                                                   ;  Structured exception handler
004014EF  |.  EB 02                                JMP SHORT t2.004014F3
004014F1  |>  33C0                                 XOR EAX, EAX
004014F3  |>  8B25 A8754000                        MOV ESP, DWORD PTR DS:[4075A8]
004014F9  |.  8B2D AC754000                        MOV EBP, DWORD PTR DS:[4075AC]
004014FF  \.  C3                                   RETN
Und für diesen Algo funktionieren beide Keygens(siehe Screenshot). Als Image funktioniert jedoch wie gesagt keines. Es hängt an dieser Stelle in User32.dll(das ganze in 'ner VirtualBox-VM, doch das dürfte egal sein):
Code:
77E089CE    F643 2B C0                             TEST BYTE PTR DS:[EBX+2B], 0C0
Diese Zeile kommt kurz nach dem Rückkehr aus der Dialog-Routine.(In Ebx ist noch das erste base64-dekodierte DWORD vom CD-Namen)

Abgesehen von dem CD-Check, der ja leider abstürzt und dem Antidebugger-Trick ist nichts dran rausgepatcht.(An der Originaldatei kann ich das aufgrund des Absturzes nicht testen, der notwendige Code zur Überprüfung ist aber drinne(ist nach der Entschlüsselung gedumpt):
http://img217.imageshack.us/my.php?image=screendc5.png
Ich sehe auch gerade, dass ich bei meinem Keygen eine Sache ausgenutzt habe, die nicht immer gültig sein muss: Nach einer Exception, wird bei mir(win2k) der Exception-Handler mit eax!=0 betreten, da der xor eax,eax-Befehl jedoch übersprungen wird, ist eax noch !=0(ist das bei dir anders?), somit also die Serial gültig, auch wenn der entschlüsselte Code eine Exception ausgelöst hat, was wahrscheinlich nicht sein sollte.
Um das zu ändern, sodass Keygen auch so funktionieren sollte, muss man einfach Zeile 18 damit ersetzen:
Code:
DWORD crc = c.FullCRC((unsigned char*)name.c_str(),name.length()) ^ 0x176f;
Im Anhang ist die geänderte Version.(braucht immernoch die Dll aus dem voherigen Archiv).
Angehängte Dateien
Dateityp: rar mucki7_kg.rar (37,7 KB, 4x aufgerufen)
Lesco ist offline   Mit Zitat antworten
Alt 07.04.08, 15:34   #5 (permalink)
Themenstarter
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
Standard

Unter WinXP steht 0 in eax, wenn der Exceptionhandler eingreifen musste (hatte nicht gedacht, dass es Unterschiede zwischen den Windowsversionen gibt). Welche Api ist bei dir denn bei 77E089CE?

Code:
DWORD crc = c.FullCRC((unsigned char*)name.c_str(),name.length()) ^ 0x176f;
ist eine gute Idee, aber dann müsste die Serial für mucki 302EA379C83A2832 sein und nicht 841DD8124E0CAC2B. Eventuell liefert dein CRC falsche Werte.

Um noch ein wenig Motivation zu schaffen:
Wenn jemand ein Tutorial schreibt, gibt es den Quellcode
mucki ist offline   Mit Zitat antworten
Alt 07.04.08, 16:03   #6 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Ok, ich habe noch rausgefunden, dass auch der Keygen mit führenden Nullen im CRC Probleme bekommt, daran lag das Problem. Als Patch einfach dies als Zeile 20:
Code:
sprintf(serial_t,"%08x",crc);
Ich werd' mich bemühen weniger verbuggte Keygens demnächst zu schreiben. Hier nochmal die aktuelle Version.(Liefert für "mucki" "487CC52E2C45B133"(Unterschied vllt. wegen Groß/Kleinschreibung von "a".."f") und funktioniert auch entsprechend(Führt dann zu "xor eax,393939...")).
Zitat:
Welche Api ist bei dir denn bei 77E089CE?
Keine Ahnung, das stammt aus den unbenannten Innereien von user32.dll, die für's Aufrufen der DialogFunc bei DialogBoxParam() zuständig sind(wird von DialogBoxParamAorW aufgerufen). Hier ein bisschen mehr Code aus der Umgebung:
Code:
77E08938    55                                     PUSH EBP
77E08939    8BEC                                   MOV EBP, ESP
77E0893B    83EC 14                                SUB ESP, 14
77E0893E    53                                     PUSH EBX
77E0893F    8B5D 08                                MOV EBX, DWORD PTR SS:[EBP+8]
77E08942    56                                     PUSH ESI
77E08943    57                                     PUSH EDI
77E08944    0FB743 2A                              MOVZX EAX, WORD PTR DS:[EBX+2A]
77E08948    8B3B                                   MOV EDI, DWORD PTR DS:[EBX]
77E0894A    33F6                                   XOR ESI, ESI
77E0894C    3BC6                                   CMP EAX, ESI
77E0894E    897D 08                                MOV DWORD PTR SS:[EBP+8], EDI
77E08951    0F84 5A010000                          JE user32.77E08AB1
77E08957    3D A2020000                            CMP EAX, 2A2
77E0895C    0F85 93050000                          JNZ user32.77E08EF5
77E08962    53                                     PUSH EBX
77E08963    E8 4B060000                            CALL user32.77E08FB3
77E08968    85C0                                   TEST EAX, EAX
77E0896A    0F84 85050000                          JE user32.77E08EF5
77E08970    39B3 98000000                          CMP DWORD PTR DS:[EBX+98], ESI
77E08976    0F85 65010000                          JNZ user32.77E08AE1
77E0897C    8B7D 0C                                MOV EDI, DWORD PTR SS:[EBP+C]
77E0897F    8975 FC                                MOV DWORD PTR SS:[EBP-4], ESI
77E08982    83FF 70                                CMP EDI, 70
77E08985    0F84 82030000                          JE user32.77E08D0D
77E0898B    8B83 9C000000                          MOV EAX, DWORD PTR DS:[EBX+9C]
77E08991    8B75 14                                MOV ESI, DWORD PTR SS:[EBP+14]
77E08994    8B00                                   MOV EAX, DWORD PTR DS:[EAX]
77E08996    85C0                                   TEST EAX, EAX
77E08998    74 3E                                  JE SHORT user32.77E089D8
77E0899A    8BD0                                   MOV EDX, EAX
77E0899C    B9 000000C0                            MOV ECX, C0000000
77E089A1    23D1                                   AND EDX, ECX
77E089A3    3BD1                                   CMP EDX, ECX
77E089A5    0F84 44010000                          JE user32.77E08AEF
77E089AB    56                                     PUSH ESI
77E089AC    FF75 10                                PUSH DWORD PTR SS:[EBP+10]
77E089AF    57                                     PUSH EDI
77E089B0    FF75 08                                PUSH DWORD PTR SS:[EBP+8]
77E089B3    50                                     PUSH EAX
77E089B4    E8 D7A2FFFF                            CALL user32.77E02C90
77E089B9    8B4D 08                                MOV ECX, DWORD PTR SS:[EBP+8]                                          ; hierhin kehrt die Dialog-Routine zurück
77E089BC    B2 01                                  MOV DL, 1
77E089BE    8945 FC                                MOV DWORD PTR SS:[EBP-4], EAX
77E089C1    E8 27C0FFFF                            CALL user32.77E049ED
77E089C6    85C0                                   TEST EAX, EAX
77E089C8    0F84 D1050000                          JE user32.77E08F9F
77E089CE    F643 2B C0                             TEST BYTE PTR DS:[EBX+2B], 0C0                                         ; AV hier
Funktioniert denn mein Image unter XP?
Angehängte Dateien
Dateityp: rar mucki7_kg.rar (37,7 KB, 1x aufgerufen)
Lesco ist offline   Mit Zitat antworten
Alt 07.04.08, 16:25   #7 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Dein Image und auch die neue Serial funktionieren bei mir. Ich kann mir nicht erklären, warum es zu Fehlern in der DialogBoxParam() kommt. Wenn du sogar schon die Base-Entschlüsselung überstanden hast, kommt doch eigentlich nur noch ein XOR-Teil.
Der Fehler liegt aber soweit ich weiß darin, dass bei stdcall ebx durch die Funktion nicht verändert zurückgegeben werden darf, lediglich eax,edx und ecx darf man verändern ohne die Anfangswerte wiederherzustellen. Als Fix würde also einfaches push ebx am Anfang und pop ebx am Ende reichen.
http://en.wikipedia.org/wiki/X86_cal...ntions#stdcall
Lesco ist offline   Mit Zitat antworten
Alt 07.04.08, 16:33   #8 (permalink)
Themenstarter
 
Registriert seit: 27.02.07
mucki Leistung: Z3
Likes: 2
Standard

schau mal, ob es hiermit funktioniert
Angehängte Dateien
Dateityp: zip crackme7.zip (47,6 KB, 3x aufgerufen)
mucki ist offline   Mit Zitat antworten
Alt 07.04.08, 16:54   #9 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von mucki
schau mal, ob es hiermit funktioniert
Ja, funktioniert.
Lesco ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » crackme#7
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Crackme#1 X360 Andy Hacks & Crackmes 9 13.08.09 17:30
Third Crackme .tails Hacks & Crackmes 22 06.08.05 03:03
First Crackme .tails Hacks & Crackmes 4 05.08.05 23:21
CrackMe 1 xlro Hacks & Crackmes 5 18.07.05 19:36
Crackme 1 Mobius Hacks & Crackmes 10 10.10.04 11:10


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61