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.

[Solved] Erstes Crackme für dieses Forum (leicht)

Diskussion: [Solved] Erstes Crackme für dieses Forum (leicht) im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo, das hier ist mein erster Thread (erstes Crackme für dieses Forum auch) und mein erstes Crackme. Ich habe ...

Antwort
Alt 17.07.11, 11:21   #1 (permalink)
 
Registriert seit: 16.07.11
TheShadowAE Leistung: Facit NTK
Likes: 1
erledigt [Solved] Erstes Crackme für dieses Forum (leicht)

Anzeige

Hallo,
das hier ist mein erster Thread (erstes Crackme für dieses Forum auch) und mein erstes Crackme. Ich habe es mit (Visual) C++ und dem inline Assembler geschrieben. Wenn das Konsolenprogramm die Meldung gibt, eine DLL fehlt, müsst ihr das VCredist-package von MS installieren: Detail Seite Microsoft*Visual*C++*2010 Redistributable Package (x86).

Es darf gepatcht werden, das Crackme ist gelöst, wenn die Meldung kommt, das Passwort ist richtig!

Ich hab noch so gut wie garnichts gecrackt, nur ein paar Assemblerbereiche gelesen, aber ich habe mich bemüht es euch möglichst schwer zu machen
Beißt euch nicht die Zähne aus!

Ich wünsche euch viel Spaß!
Mfg
TheShadowAE

Angehängte Dateien
Dateityp: zip CrackMe.zip (4,7 KB, 34x aufgerufen)

Geändert von TheShadowAE (18.09.11 um 00:20 Uhr) Grund: Solved
TheShadowAE ist offline   Mit Zitat antworten
Alt 17.07.11, 15:08   #2 (permalink)
 
Registriert seit: 07.01.07
CoRe0153 Leistung: Facit NTK
Likes: 0
Standard

Die Lösung lautet:

Source code   

PHP-Code:
    char serial[28];
    
int counter1 1;
    
int counter2 1;
    
char *dest = (char*) malloc (sizeof(char)*2);
    
char code[26] = {'\x73''\x68''\x56''\xBB''\x35''\xB9''\x76''\xF1''\x68''\x17''\xA9''\x3F''\xA9''\x2A''\x08''\x78',
                     
'\x2F''\x8E''\x62''\x8E''\x6F''\xA2''\xEC''\xF3''\x00'};

    for (
int i 028i++)
    {
        if (
== 0)
        {
            
// Code[i] XOR 0x1A
            
serial[i] = code[i] ^ '\x1A';

            
// Dez2Hex
            
sprintf(dest"%c"counter1);

            
// Subtraction
            
serial[i] = serial[i] - dest[0];

            
// Rotate right
            
serial[i] = rol(serial[i], 3);
            
counter1++;
        }
        else
        {
            
// Dez2Hex
            
sprintf(dest"%c"counter2);

            
// Odd serial place constitutes the actual cipher amount
            
serial[i] = dest[0];

            
// Increase counter
            
counter2++;
        }
    }
    
    
// Last cipher
    
serial[26] = '\xFE' '\x1A';
    
serial[26] = serial[26] - ror('\x0d'3);

    
// We need every even sign
    
for (int i 027i=i+2)
    {
        
printf("%c"serial[i]);
    }

    return 
0
Das Passwort lautet somit: CRaCkmePasSWhC

CoRe0153 ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 17.07.11, 15:54   #3 (permalink)
Themenstarter
 
Registriert seit: 16.07.11
TheShadowAE Leistung: Facit NTK
Likes: 1
Standard

Wie hast du das jetzt geschafft?
Und das Passwort was ich einprogrammeirt habe ist eigentlich
Passwort   
CRaCkmePasSW, also ohne die letzten 2 Buchstaben

Da muss ich wohl irgendwo schlampig programmiert haben..

EDIT:
Mein Sourcecode:
Source   
Code:
#include <iostream>

using namespace std;

#define PW (unsigned char)0x73,(unsigned char)0x68,(unsigned char)0x56,(unsigned char)0xBB,(unsigned char)0x35,(unsigned char)0xB9,(unsigned char)0x76,(unsigned char)0xF1,(unsigned char)0x68,(unsigned char)0x17,(unsigned char)0xA9,(unsigned char)0x3F,(unsigned char)0xA9,(unsigned char)0x2A,(unsigned char)0x08,(unsigned char)0x78,(unsigned char)0x2F,(unsigned char)0x8E,(unsigned char)0x62,(unsigned char)0x8E,(unsigned char)0x6F,(unsigned char)0xA2,(unsigned char)0xEC,(unsigned char)0xF3,(unsigned char)0
inline void encode(char *str);
void falsch(bool);


int main()
{
	__asm
	{ //repe cmpsb prüfen
		push eax
		push esi
		mov esi,ort
		lodsw
		cmp ax,0xA6F3 //F3=repe :: A6=cmpsb ;; musste wegen little endian getauscht werden
		jne inner
		jmp wwww
		inner:
		pop esi
		pop eax
	}
	falsch(true);
	__asm
	{
		wwww:
		pop esi
		pop eax
	}
	char buff[101]={(unsigned char)0};
	char buf[51]={(unsigned char)0};
	cout << "Passwort: ";
	cin.getline(buf,51,'\n');
	for (unsigned int i=0; i<strlen(buf); i++)
	{
		buff[i*2]=buf[i];
		buff[i*2+1]=i+1;
		buff[(i+1)*2]=(unsigned char)0;
	}
	encode(buff);
	char pw[25]={PW};
	int r=0;
	__asm
	{
		push esi
		push edi
		push ecx
		lea esi,pw[0]
		lea edi,buff[0]
		mov ecx,25
		ort:
		repe cmpsb //wenn ecx=0 oder String stimmt nicht überein: Schleifenabbruch
		or ecx,ecx
		jnz www
		inc r
		www:
	}
	if (r==0) falsch(false);
	cout << "Passwort richtig! Vielen Dank fuer's Cracken :)\nGehen sie bitte nach dem Dreifach-Beep auf meine Homepage: TheShadowAE.ohost.de\a\a\a";
	system ("pause >nul");
	exit(0);
	return 0;
}



void falsch(bool which)
{
	if (which) cout << "Die Datei wurde veraendert!\nDruecke eine beliebige Taste zum beenden!\n";
	else cout << "Das Passwort ist falsch!\nDruecke eine beliebige Taste zum beenden!\n";
	system("pause >nul");
	exit(1);
}

inline void encode(char *str)
{
	int len=strlen(str);
	for (int i=0; i<len; i++)
	{
		char c=str[i];
		__asm
		{
			push ax
			mov al,c
			ror al,3
			mov c,al
			pop ax
		}
		c+=str[i+1];
		if (i==len-1) c+=str[1];
		c^=26;
		str[i]=(c&0xFF);
	}
}

Geändert von TheShadowAE (17.07.11 um 15:59 Uhr)
TheShadowAE ist offline   Mit Zitat antworten
Alt 18.07.11, 22:00   #4 (permalink)
 
Registriert seit: 07.01.07
CoRe0153 Leistung: Facit NTK
Likes: 0
Standard

Sry habe die Woche leider noch sehr viel zu tun. Werde mich am Wochenende hinsetzen und einen ausführlichen Lösungsweg posten. :-)
CoRe0153 ist offline   Mit Zitat antworten
Alt 19.07.11, 12:18   #5 (permalink)
Themenstarter
 
Registriert seit: 16.07.11
TheShadowAE Leistung: Facit NTK
Likes: 1
Standard

Nicht mehr nötig, ich hab einige Crackmes aus dem Forum gemacht und hab mein eigenes ganz leicht gepatcht.
Und der Algo ist auch leicht zu verstehen, mein nächstes Crackme ist ald fertig, das wird schwerer, vorallem weil ich jetzt auch ein bsischen Crackerfahrungen gemacht hab
TheShadowAE ist offline   Mit Zitat antworten
Antwort

Stichworte
assembler, c++, crackme
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » [Solved] Erstes Crackme für dieses Forum (leicht)
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



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