moje cracksme dla DEUSa!

0

Deus taki dobry byles jak lamales moje pierwsze cracksme, przygotowalem dla ciebie 2 wersje, jestem ciekaw czy teraz tez ci bedzie do smiechu hihi :), wyzywam cie przy wszystkich na pojedynek crackerski!

Cracksme znajduje sie w serwisie C4U

http://www.crackmes.prv.pl (main site)
http://crks.zapto.org/~tomkol/download.php?fid=1029 (moje cm)

diabel [diabel]

0

witaj barcie znów na naszych stronach.. musisz za każdym razem nowego nicka rejestrować? wiesz, że bez logowania też możesz tworzyć wątki? :)
takie szranki to lepiej prywatnie sobie ustawiać.. no ale niech Ci będzie, wątek zostawiam, jako że to rzadkość w naszych skromnych progach

a głosuję na "tak" bo wiem, że deus zarwie miesiąc, wyklnie go rodzina, a lokalny pastor będzie się dobijał drzwiami i oknami by odprawić egzorcyzmy, ale radę da :)

0

tu diabel jedyny i oryginalny! zapraszam na irca siedze tam pod nickami diabel lub diabel- lub diabel^

0

poczta.txt

Rozwionzanie na [email protected]

Zamiast bawic sie w hakiera to zajmij sie lepiej poprawnoscia ojczystego jezyka

0

nie rozumiem o co chodzi? Adres email jest poprawnie podany mozesz sam sprawdzic i napisac do mnie cos.

0
.text:0040148D                 mov     esi, ds:AddVectoredExceptionHandler
.text:00401493                 call    esi ; AddVectoredExceptionHandler

rotfl, czego was uczom w tej szkole hakierów? [rotfl]

0
bart^xt napisał(a)

wyzywam cie przy wszystkich na pojedynek crackerski!

Przyjmuję wyzwanie w duchu, w jakim zostało złożone. Bart, jak delfiny kocham, tym razem przesadziłeś...

bart^xt napisał(a)

jestem ciekaw czy teraz tez ci bedzie do smiechu hihi

hmm... ja chcę jeszcze raz [rotfl] Nad poprzednim Twoim cm /IHMO znacznie prostszym/ siedziałem 2 dni, nad tym natomiast kilka godzin. Zabawne, że jeszcze niedawno stawiałeś mnie na równi z sobą, teraz zaś jestem tylko newbie.
Muszę przyznać iż tak ciekawego cm chyba jeszcze w życiu nie łamałem /w końcu autor jest IMO najlepszym crackerem w Polsce i jednym z najlepszych na świecie/. Coś a'la maszyna wirtualna? Dlatego odmówiłem prawdziwemu diabłowi bo wiedziałem kto jest faktycznym autorem tego cacka - rzut oka na tablicę importów i wszystko jasne, VEH /nie znam żadnego innego crackera stosującego VEH, Ty zaś w wielu rozmowach o tej technice wspominałeś/. To, że nie znałem tej technologii 2 m-ce temu nie oznacza iż nie jestem w stanie jej zrozumieć. Pozwolę sobie wrzucić silnik tej zabawki przepisany na C++ /gdybym tego nie zrobił, skończyłbym wcześniej/:

#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <stdio.h>
#include <conio.h>

#define INST(code) asm (".byte 0xcc, " #code);
#define ASM_INT3 0xcc

enum INSTRUCTIONS   // nie czepiac sie nazewnictwa - pisane na szybko, bez zastanowienia ;)
{
    NOP = 0, INFO_BAD, CMP_A_EBCF62D2_IDP, XOR_A_FFFFFF3C_IDP, XOR_A_B_B0,
    SUB_A_B_XOR_A5, ADD_A_B_XOR_138, JAB0_EXIT, MOV_B_C, MOV_A_D_IDP,
    CMP_CD_BYTES_0, GET_S, INFO_INPUT
};

typedef struct _INSTRUCTION {
    BYTE    int3;
    BYTE    ControlCode;
} INSTRUCTION, *PINSTRUCTION;

typedef struct _VM_REGS
{
    DWORD   A;
    DWORD   B;
    DWORD   C;
    DWORD   D;
} VM_REGS;

LONG WINAPI GetInstruction (PEXCEPTION_POINTERS);
LONG WINAPI ExecuteInstruction (PEXCEPTION_POINTERS);

DWORD Instruction (0x15);
VM_REGS REG;

int main (int argc, const char **argv, const char *envp)
{
PVOID handler1, handler2;

    handler1 = AddVectoredExceptionHandler(1, GetInstruction);
    handler2 = AddVectoredExceptionHandler(0, ExecuteInstruction);

    #include "vm_code.h"
    
    RemoveVectoredExceptionHandler (handler2);
    RemoveVectoredExceptionHandler (handler1);

    return 0;
};

LONG WINAPI GetInstruction (PEXCEPTION_POINTERS ExceptPtrs)
{   
    PINSTRUCTION pCode = (PINSTRUCTION) ExceptPtrs->ContextRecord->Eip; 
      
    if (pCode->int3 == ASM_INT3) switch (pCode->ControlCode)
    {
        case 0x00: Instruction = SUB_A_B_XOR_A5; break;
        case 0x01: Instruction = JAB0_EXIT;  break;
        case 0x03: Instruction = ADD_A_B_XOR_138; break;
        case 0x05: Instruction = MOV_A_D_IDP;  break;
        case 0x11: Instruction = INFO_INPUT; break;
        case 0x41: Instruction = CMP_A_EBCF62D2_IDP; break;
        case 0x46: Instruction = INFO_BAD; break;
        case 0x56: Instruction = MOV_B_C;  break;
        case 0x68: Instruction = GET_S; break;
        case 0x70: Instruction = XOR_A_B_B0;  break;
        case 0x8D: Instruction = XOR_A_FFFFFF3C_IDP; break;
        case 0xFF: Instruction = CMP_CD_BYTES_0; break;
        default:   Instruction = NOP; 
    };
    return 0; 
};

LONG WINAPI ExecuteInstruction (PEXCEPTION_POINTERS ExceptPtrs)
{
    switch (Instruction)
    {
        case NOP:
            break;
        case INFO_BAD:
        {
            printf ("Niepoprawne haslo,jestes LAMEREM!\n");
            getch();
            exit(1);
        }
        case CMP_A_EBCF62D2_IDP:
        {
            if (REG.A == 0xEBCF62D2)
            {
                printf ("Poprawne haslo,niespodziewanka co!!!!!!!!!!!!!!!!!!");
                getch();
                exit (0);
            }
            Instruction = IsDebuggerPresent();
            break;
        }
        case XOR_A_FFFFFF3C_IDP: 
         {  
            REG.A ^= 0xFFFFFF3C;
            ExceptPtrs->ContextRecord->Eip -= IsDebuggerPresent();
            break;
        }
        case XOR_A_B_B0:
        {
            REG.A ^= REG.B ^ 0xB0;
            break;
        }
        case SUB_A_B_XOR_A5:
        {
            REG.A -= REG.B ^0xA5;
            break;  
        }
        case ADD_A_B_XOR_138: 
        {
            REG.A += REG.B ^ 0x138;   
            break;
        }
        case JAB0_EXIT:
        {
            if (!(REG.A | REG.B)) exit (1);
            break;
        }
        case MOV_B_C:
        {
            REG.B = REG.C;
            break;
        }
        case MOV_A_D_IDP:
        {
            REG.A = REG.D;
            ExceptPtrs->ContextRecord->Eip += IsDebuggerPresent();
            break;
        }
        case CMP_CD_BYTES_0:
        {
            PBYTE pBytes = (PBYTE)&REG.C;
            while (*pBytes)pBytes++;
            DWORD len = (DWORD)(pBytes -(DWORD)(&REG.C));
            if ( len != 8) exit (1);
            break;
        }
        case GET_S:
        {
            gets((char*)&REG.C);
            break;
        }
        case INFO_INPUT: 
        {
            printf ("diabel cm 2oo6 N0T4N00BS\n\nPodaj haslo noobie:");
            break;
        };
        default: 
            exit (0);

    }   
        return -1;
};

Teraz może małe wyjaśnienie - VEH to taka przyjemniejsza pochodna SEHa. W kodzie po ustawieniu handlerów występuje ciąg bodaj 766 instrukcji czy też może bytecode'u o takim formacie:

db 0xcc ; int3
db 0xXX ; gdzie XX to kod czynnosci do wykonania

GetInstruction sprawdza kod i zapisuje w zmiennej Instruction numer czynnosci do wykonania. Zwracając 0 informuje system, że wyjątek nie został obsłużony - wywoływany jest następny handler czyli ExecuteInstruction. Ten jak nazwa wskazuje wykonuje zadaną operację, przesuwa eip emulowanego kodu o 2 /int3 + db 0xXX/ i informuje system o uporaniu się z wyjątkiem. I co napotyka system po przeładowaniu kontekstu? Kolejnego breakpointa. VM operuje na 4 dwordach, można więc przyjąć, iż mamy do czynienia z z wirtualnym 32b procesorem o 4 rejestrach /+eip oczywiście/. Pliku "vm_code.h" nie zamieszczam - nawet po odsyfieniu\zoptymalizowaniu trochę to zajmuje... Czytelność przedstawionego przeze mnie kodu pozostawia wiele do życzenia, ale nie był on do końca pisany z myślą o publikacji... Ale nie jest tak źle :-) Sprawa jest o tyle ciekawa, że w praktyce tylko 2 rejestry /A i B/ bają znaczenie, B zaś nie jest modyfikowany /niby wygląda to inaczej, ale... / Serial musi mieć dokładnie 8 znaków - za sprawdzanie tego odpowiada 'case CMP_CD_BYTES_0' w ExecuteInstruction. Resztę doczytacie sobie sami :>
Obfuscator i proste coś a'la vm to za mało aby mnie powstrzymać. Czy dwóch bartów to o jednego za dużo? Kiedyś skończysz w puszkach. Udowodniłem swoją wartość w sposób jaki sam wybrałeś, zamiast skompromitować mnie, skompromitowałeś siebie. Oczekuję iż albo odzyskam dawne uprawnienia na ^D - full member, moderator /'fachowego' maila gdybyś był taki miły również/ i oczywiście zdjęcie bana albo ew. pozwolisz mi odejść w spokoju z naszego fachu. Tak, to prawda - chciałem się wycołać... do dzisiaj. Zmusiłeś mnie do powrotu. I wiesz co? Jak tak na to patrzę to dobrze mi robi takie małe crackerskie współzawodnictwo :>
Może teraz przedstawię naszą gwiazdę - słynny bart z xt, redaktor naczelny TAC-a /przeprowadził wywiad m.in. ze mną/, administrator serwisu ctrl-d / www.woodmann.com/bart/ / i najlepszy zawodnik na naszej rodzimej crackscenie. Jak widać lubi podszywać się pod innych /zwłaszcza newbie - tak jak teraz, pod współpracującego z nim niejakiego diabła/. Dosyć nerwowy. Jako pierwszy polak połamał RSA i sprowadził na świat klątwę 'Pajączka' /btw. niech ktoś pozdrowi Rafala Platka/. Co by tu jeszcze? Hm... jest sporo ciekawych informacji, ale źle by się skończyło gdybym cokowiek ciekawszego wypomniał.
Next - dlaczego kolejna prowokacja? W listopadzie nie wytrzymałem nerwowo jego komentarzy nt. deus vs. StarForce. Moja riposta skończyła się utratą uprawnień i banem... ale to jak widać Bartoszowi nie wystarczyło :/ Nieoficjalnie obiecał przebaczenie za złamanie tego cm - pożyjemy zobaczymy.

Marooned napisał(a)

a głosuję na "tak" bo wiem, że deus zarwie miesiąc, wyklnie go rodzina, a lokalny pastor będzie się dobijał drzwiami i oknami by odprawić egzorcyzmy, ale radę da

heh, M. nie przesadzaj, to już nie te czasy - na co mi miesiąc... ;P Hm, wszyscy są za mną, dzięki za wiarę ludzie. Sam nie głosowałem - gdybym głosował to pewnie padłaby odpowiedź 'Nie, spanikuje', o taka sobie solidarność z tym tu - bartem - bratem po fachu :-)

CyberKid napisał(a)
.text:0040148D                 mov     esi, ds:AddVectoredExceptionHandler
.text:00401493                 call    esi ; AddVectoredExceptionHandler

rotfl, czego was uczom w tej szkole hakierów? [rotfl]

nie śmiej się - ten kod jest wygenerowany przez VC++ a bart ma łeb. Inna sprawa, że 2 minuty analizowałem jeden fragment kodu aby stwierdzić, że to zwykły switch [rotfl] .
Jeśli zaś chodzi o orty Bartosza - nieźle udaje styl oryginalnego diabła ;)

Następnym razem /oby NIE!/ potraktuj cm pelockem - będziesz miał większe szanse :-) Najlepszy protector jaki widziałem... oby miał lepszą VM niż aktualne cm.

Bart, to jak - chcesz dalej ciągnąć tą bezsensowną wojnę czy może będzie jak dawniej? Myślę, że bardziej nam obu na zdrowie wyjdzie współpraca.

a, zapomniałbym:
tnM3
czyli słownie cztery spacje i 'tnM3'...

p.s. Potem może coś więcej napiszę - aktualnie to przypaliłem frytki... wypadałoby jednak je zjeść :/
p.s. 2: temat może do perełek?
p.s. 3: @ ten cwaniak co przniósł temat do [Innych] - jak to nie jest nietuzinkowy temat to ja jestem ksiądz proboszcz; czekam na key z niecierpliwością /razem z bartem ;P/- podstawy masz podane na tacy. Poprzedniego cm niejakiego Donia jakoś nikt inny nie złamał... i wisi w NT :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1