[visual basic] CrackMe

deepthr0at

Użytkownik
Dołączył
Styczeń 27, 2006
Posty
19
Witam wszystkich na forum
smile.gif

Nie wiem ile ma to wspolnego z programowaniem, ale pewnie ma wiec mam pytanie:
http://www.hackr.org/harder.rar - jak zabrac sie za tego typu programy ??
Na stronce rozwiazalem wszystkie zadania z beginners i moderate, a z advanced se nie umie poradzic
<


Trzeba miec jakis debuger ? Jak go urzyc ? prosze o pomoc , gdyz nigdy sie takmi czyms nie bawilem
<

Z gory thx
<


[you:66dc015500] jezeli wiesz jak to zrobic, pomoz !!
<
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Wyglada na to ze programik napisany jest VB
<
Jak mozesz to wklej opis zadania choc nie bardzo podoba mi sie grzebanie w VB
<
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Mnie też to boli :-| (Microsoft Visual Basic 5.0 / 6.0). No i pierwsze co zauważyłem przy uruchomieniu crackme to, że jak wpisałem tam słowo "password" to text w polu zamienił się na "no", troche głupie spostrzeżenie i chyba nieprzydatne, ale co tam.
"deepthr0at" daj jakis opis tego crackme.
 

deepthr0at

Użytkownik
Dołączył
Styczeń 27, 2006
Posty
19
Advanced Level 1

Download this file [harder.rar]

Password:

<
jak wpiszesz poprawne haslo to program chyba wyswietli haslo ktore trzeba wpisac na stronke
<


Ale bede wdzieczny jak mi napiszesz dokladniej jak sie robi takie zadania
<


Dekompilowalem to IDA, ale nie czaje gdzie tego szukac
<


to co [you:1317ff2a9e] pomozesz ?
<
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Ja nie mam zielonego pojęcia jak się za to VB zabrać.
Tutaj masz String List z tego pliku, może coś Ci to pomoże (wątpie
<
). Analiza kodu to przyjemność... ale jak masz kod Visual Basic'a... to wręcz przeciwnie.
 

eXxyL

Użytkownik
Dołączył
Styczeń 25, 2006
Posty
12
Na wstepie: vb == shit
Heh, crackme jest banalne
smile.gif
10 sekund pod ollym i:


xxxxx - dobra zaiksowalem


cracked by eXxyL ;p
(radzilbym Wam poczytac troszke o asm'ie zanim wezniecie sie za cracking)
Ps: to ma byc super crackme? Jesli tak to sprobujcie napisac kg do proga zabezpieczonego rsa
<

eot
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Brakuje mi biblioteki VB wiec nie znam deklaracji uzywanych funkcji ale po wrzuceniu tego czegos do IDA (link w dziale Windows Expert) znajdziesz funkcje ktore mowia same za siebie - np. __vbaStrCmp
<
Jak przeanalizujesz co dzieje sie po kolei to mysle ze dojdziesz co jest z tymi wyrazami password, keep i trying. Jak chcesz mozesz sprobowac podpiac dll'ka lub stworzyc *.sym dll'a i probowac z pulapkami pod SI. Jak nie wiesz co i jak z SI - Windows Expert odpowiedni temat - RE.
 

eXxyL

Użytkownik
Dołączył
Styczeń 25, 2006
Posty
12
pozniej napisze Wam tut'a jak znalezc pass'a i jak crack'ac crcme, aby 'kazdy ciag znakow byl uznawany za good password'
 

eXxyL

Użytkownik
Dołączył
Styczeń 25, 2006
Posty
12
Tut:

Target: LTH HCX crackme
Tools: Ollydbg [ http://www.ollydbg.de/ ], PEiD
Author: eXxyL

Wstep:
Na wstepie chce zaznaczyc, ze mam 14 lat, i jesli w tym tekscie wystapily bledy, to prosze na mnie tak mocno nie najezdzac.

Krotki opis: Bardzo latwe crackme. [1/10]

Lets go...:

Uruchamiamy harder.exe i odrazu widzimy, ze w tym crackme zastosowano zabezpieczenie typu pass (tego sie juz w komercyjnych programach nie stosuje, ale mniejsza o to). Nastepnie harder.exe ladujemy do PEiDA, dowiadujemy sie, ze crackme zostal napisany w Microsoft Visual Basic 5.0 / 6.0 - o zgrozo(reversowanie vb, to istne pieklo... ale coz...), dzieki "Krypto ANALyzer'owi"(wtyczka do PEiDA) dowiedzielismy sie o braku crypt'o - bardzo dobrze.

Znamy juz wszystkie potrzebne informacje, mozemy zaczac reversowac! yeah! Do olly'ego ladujemy harder.exe, iiiiiiiiiiiiii widzimy tone vb-g***na, ktora mozna zastapic kilkoma linijkami pure asm. Rozgladajac sie po kodzie, natrafiamy na takie cos:

Kod:
00402332   mov,edx,harder.00402150   UNICODE "trying"

...

...

...

00402398   push harder.00402174   UNICODE "keep"

...

...

...

00402475   push harder.00402184   UNICODE "password"

Po wpisaniu kazdego string'a w crackme nie bylo reakcji (z wyjatkiem password, program odpowiadl - no). Wiemy juz, ze zaden z tych string'ow nie jest poprawnym pass'em. Hmm... a moze brany jest co czwarty bit z kazdego string'a? a moze co drugi? Nie sprawdzimy tego dopoki nie uzyjemy debbuger :mrgreen:

Stawiamy bp(breakpoint <- punkt przerwania)[F2] od adresu 004022F0 do 004023EF, i 'puszczamy'[F9] harder.exe.

nie bede kopiowal calego 'listingu', wazniejsze
Kod:
...

...

...

00402332MOV EDX,harder.00402150                 ;  UNICODE "trying" : trying do rejestru edx

...

...

przed 'doklejeniem' znajduje sie masa niepotrzebnych porownan [img]http://www.haker.com.pl/style_emoticons/<#EMO_DIR#>/sleep.gif[/img]'

...

0040239F  MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrMove; trying+keep=tryingkeep

...

do eax, trying

eax = trying

...

004023B3  MOV EDX,EAX : EDX = tryingkeep, EAX = trying, EAX do EDX = tryingkeep+trying=tryingkeeptrying

...
i tak powstal nam poprawny password
smile.gif


Teraz czas na zlamanie "zabezpieczen" ;]

Kod:
004023BB   . FF15 34104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>]          ;  MSVBVM60.__vbaStrCmp

004023C1  MOV ESI,EAX

004023C3  LEA EAX,DWORD PTR SS:[EBP-24]

004023C6  NEG ESI

004023C8  LEA ECX,DWORD PTR SS:[EBP-1C]

004023CB  PUSH EAX

004023CC  SBB ESI,ESI

004023CE  LEA EDX,DWORD PTR SS:[EBP-20]

004023D1  PUSH ECX

004023D2  INC ESI

004023D3  PUSH EDX

004023D4  PUSH 3

004023D6  NEG ESI

004023D8  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStrList>]     ;  MSVBVM60.__vbaFreeStrList

004023DE   ADD ESP,10

004023E1   LEA ECX,DWORD PTR SS:[EBP-28]

004023E4   CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObj>]         ;  MSVBVM60.__vbaFreeObj

004023EA   TEST SI,SI                        ; Testuje..

004023ED  JE SHORT harder.00402434 ;je = jump if equal (skocz jezeli rowne), jesli 'test' da pozytywny wynik(w tym wypadku to zle) - skocz do harder.00402434 (tzw. badboy)
Wystarczy wylaczyc ten skok, ctrl+e i wstukac 9090. (90 - nop, nie pracuj)
Program po wpisaniu czegokolwiek zwroci poprawny password

To by bylo na tyle
smile.gif
 

deepthr0at

Użytkownik
Dołączył
Styczeń 27, 2006
Posty
19
nie bede kopiowal calego 'listingu', wazniejsze
Kod:


GDZIE JEST TEN KOD ??


...
...
...
00402332MOV EDX,harder.00402150 ; UNICODE "trying" : trying do rejestru edx
...
...
przed 'doklejeniem' znajduje sie masa niepotrzebnych porownan
<
'
...
0040239F MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrMove ; trying+keep=tryingkeep
...
do eax, trying
eax = trying
...
004023B3 MOV EDX,EAX : EDX = tryingkeep, EAX = trying, EAX do EDX = tryingkeep+trying=tryingkeeptrying
...

i tak powstal nam poprawny password Uśmiech...

Teraz czas na zlamanie "zabezpieczen" Uśmiech krzywy

Kod:


004023BB . FF15 34104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp
004023C1 MOV ESI,EAX
004023C3 LEA EAX,DWORD PTR SS:[EBP-24]
004023C6 NEG ESI
004023C8 LEA ECX,DWORD PTR SS:[EBP-1C]
004023CB PUSH EAX
004023CC SBB ESI,ESI
004023CE LEA EDX,DWORD PTR SS:[EBP-20]
004023D1 PUSH ECX
004023D2 INC ESI
004023D3 PUSH EDX
004023D4 PUSH 3
004023D6 NEG ESI
004023D8 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStrList>] ; MSVBVM60.__vbaFreeStrList
004023DE ADD ESP,10
004023E1 LEA ECX,DWORD PTR SS:[EBP-28]
004023E4 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
004023EA TEST SI,SI ; Testuje..
004023ED JE SHORT harder.00402434 ;je = jump if equal (skocz jezeli rowne), jesli 'test' da pozytywny wynik(w tym wypadku to zle) - skocz do harder.00402434 (tzw. badboy)

JAKI PRZESKOK ???


Wystarczy wylaczyc ten skok, ctrl+e i wstukac 9090. (90 - nop, nie pracuj)
Program po wpisaniu czegokolwiek zwroci poprawny password[/b]
 

eXxyL

Użytkownik
Dołączył
Styczeń 25, 2006
Posty
12
00402332 - to jest offset ( ctrl-d.prv.pl <- jesli nie wiesz co to, ctrl-d.prv.pl, dzial slownik)
... - ze tu byl kod, ale malo interesujacy
 

Mo4x

Były Moderator
Dołączył
Grudzień 26, 2005
Posty
704
Podziwiam cie eXxyL za to. Ja jak widze VB to mnie na wymioty bierze.
 

deepthr0at

Użytkownik
Dołączył
Styczeń 27, 2006
Posty
19
nie no cholera nie widze tego kawalka kodu
<

Uruchamiam debuger i jak nacisne klawisz to mnie wpierdziela do tego kodu, na ktorym postawilem breakpoint
<
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Wrzuc to pod IDA tam tes wszystko widac... Do tego wcale nie musisz debugera uzywac...
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Nie potrzebna jest pelna wersja styknie to - IDA. Choc po tym co napisal eXxyL nie wiem czy warto raz jeszcze to przegladac bo wszystko jest na tacy. Tak jak juz wczesniej podal ciekawiej bedzie jak sciagniesz sobie jakies inne crackme (ctrl+d) i sam przeanalizujesz a w razie problemu solucje poczytasz
smile.gif


//Ponoc juz jest IDA 5
<
 
Do góry Bottom