Moje crackme dla Was :)

0

Witam wszystkich :)
Wspomnianie w temacie crackme znajduje sie tutaj, zapraszam wszystkich do łamania. CM bardzo łatwe, nawet nie ma co porównywać z poprzednimi z 4p.... no ale też twórca mniej znany ;)
Co do samego cm - nie użyłem żadnego protectora/packera, jedno proste zabezpieczenie anty-debug i... tyle Wam wystarczy ;) Komuś kto ma chociaż o tym jako-takie pojęcie nie powinno zająć zbyt wiele czasu :) Licze, ze rano juz bedzie rozwiazanie :)

0

u mnie się wywala po wpisaniu hasła, chwilowo nie chce mi się dalej wnikać - to celowo?

0

Mozesz rozszerzyć "wywala" - co dokładnie się dzieje i jakie hasło wpisujesz? Byle jakie?

0

jakiekolwiek - dostaję AV. W2k3.

// ja też, XP - Cold

0

:/ Chyba już wiem o co chodzi.... Cholera dzisiaj nie mam czasu, jutro to poprawie....

0

Hah, a już myślałem że chodzi o cm które najpierw trzeba naprawić żeby potem je złamać ;P

0

lepiej - musisz najpierw złamać, żeby móc naprawić :P

0

No i widzisz Cyrielu, twoje CrackMe reklamowane jako "łatwe" okazało się ciężkim orzechem do zgryzienia. Zabezpieczenie anty-debug pierwsza klasa - no bo jak tu spokojnie i kulturalnie śledzić wykonywanie programu, który się wyjebuje z tytułu AV? :P

0

Rzuciłem na to okiem i powiem krótko - Cysiek, lecz się. Powody? Wymienię kilka, które rzucają się w oczy:

  • 'oryginalny' antydebug polegający na kopiowaniu funkcji systemowej... jeżeli IsDebuggerPresent jest (s)patchowana to z patchem ją kopiujesz, jak stoi na niej breakpoint to z breakpointem ją skopiujesz - albo debuggera nie wykryjesz albo poinformujesz o próbie wykrycia. Rozmiar odczytywanego kodu masz na styk... a co z innymi wersjami Windowsa? Starczy adres względny w kodzie lub chociaż jeden bajt więcej i CM się wyłoży.

  • wspomniany AV:

                push    0               ; lpNumberOfBytesWritten
                push    4               ; nSize
                lea     eax, [esp+28h+address]
                push    eax             ; lpBuffer
                push    (offset @@printMsg+1) ; lpBaseAddress
                push    ecx             ; hProcess
                mov     [esp+34h+address+3], dl
                call    [ds:WriteProcessMemory]
@@printMsg:
                push    dword 0 
                call    ebp

zmieniasz argument pusha poprzez WriteProcessMemory - dosyć głupie bo i tak sekcja musi mieć prawa do zapisu więc mógłbyś bezpośrednio. Wartość argumentu pochodzi od seriala, najniższy zaś bajt jest stały - 0x3C. W sumie najwyższy też bo pochodzi z róznicy znaku z samym sobą... x-x = 0 o ile jeszcze z podstawówki pamiętam. Prawidłowa wartość to 0x40313C, offset stringa 'Well done :)\n'. AV w tym wypadku leci z powodu:

                 mov     eax, [g_passLen]
                 xor     eax, 0Dh
                 push    ebp
                 mov     ebp, [ds:printf]
                 push    esi
                 push    edi
                 jnz     @@printMsg

czyli jak długość stringa jest niewłaściwa to odstawiamy 'printf(NULL);', odkrywcze. Żeby się binarka nie sypała to we wspomnianym pushu argumentem powinno być 0x4031AC czyli offset 'Bad password! Try again...!'. Żebym na stare lata uczył autora crackme jak ma crackme połatać żeby się nie sypało... tracę wiarę w ludzi.

  • mała uwaga - jest coś takiego jak puts, printf powinien przyjmować format string i formatowane argumenty, nie czysty tekst do wypisania, szczególnie z '\n'. Druga uwaga - używasz klasy string i operatora >> z cina do tego stringa ale wyjście to już na printf robisz, gdzie tu logka?

  • całe to sprawdzanie to luźno powiązane zależności znaków:

[9] - [4] / [7] - [2] = 0x31 // pierwszy fragment adresu
[6] - [0] = '0'
([11] - [3]) / 2 = [7] - [6]
([8] + [5]) % 156 - 1 = 0x40 // drugi fragment fragment adresu
[1] + [0] + 1 = [9]
[9] + 0x0D = [10]
[5] % [11] = [3]
([2] - [0]) * [0] - 5 = [12]
[12] = [12] // rożnica - 0 - to trzeci fragment adresu

kilka przekształceń i odpowiednia kolejność obliczeń i całość przeliczona:

1337cracker;]

  • wybacz ale to wygląda na CM pisane całkowicie bez pomysłu, bez przetestowania... po prostu siadłeś i coś naklepałeś. Może jestem wredny ale na 4p jeszcze tak lichego crackme czy innego obiektu RE nie było, wspominałeś, że robisz HC, nie wygląda abyś był w stanie zrobić skoro nawet nie zauważyłeś wysypania się programu przy nieprawidłowej ilości znaków. Tak gdzieś raz na rok się jakieś 'wyzwanie' pojawia, tamte nie zawierały przynajmniej głupich błędów, były przetestowane i ciekawsze. Póki co w historii 'wyzwań' wypadłeś najgorzej. Więcej klepania postu niż RE...

Czas wracać do RE za pieniądze, koniec dnia dobroci dla ludzi...

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