Cracking tutorial #3 by lukep

Zawartosc :

  1. Proste badanie kodu, czyli poczatkujacy Cracker w poszukiwaniu wlasciwego seriala (Hmemcpy)
  2. Wykorzystanie funkcji Hmemcpy po raz drugi
  3. Cd-checki ciag dalszy
  4. Time-limit

Spotykamy sie po raz trzeci, dzis dowiemy sie jak szukac wlasciwych danych rejestracyjnych dzieki funkcji Hmemcpy. Jak zwykle beda Cdcheck'i. Bedziemy rowniez lamac kolejny timelimit program.

Czas zaczac !!!

CO JEST NIEZBEDNE ( jezeli chodzi o ten tutorial ) :

  1. WDasm32 v.8.93
  2. Hiew v.6.16
  3. SoftIce v.4.01
  4. Umiejetnosc pisania w Pascalu , C , C+ ... lub dobry patcher
  5. Dosc dobra znajomosc Asemblera => przeczytac i dokladnie sie zapoznac z "ART OF ASSEMBLY LANGUAGE" znajdziesz np. na: http://www.corleone.net/a_s_s_e_m_b_l_y.html
  6. Mozg i intuicja !!!
  7. Sporo czasu i konsekwentnej dobrej roboty.

Nasz przykladowy SOFTWARE :

  1. Vulcan Notes 95 - Version 2.13 <= dolaczony do tutora lub szukac w sieci(www.webcom.com/vulcan)
  2. MacroMagic 4.1 L <= CHIP 9\99
  3. CaptureEze Pro v.7.0 <= ENTER 8\99 CD1
  4. Heretic II v.1.0 (Sic!!!)

Funkcja HMEMCPY-potezne narzedzie Cracker'a

Software: Vulcan Notes 95 - Version 2.13 <= dolaczony do tutora lub szukac w sieci (www.webcom.com/vulcan)

Jest to stary programik, dosc prosty do rozgryzienia, wybralem go z dwoch powodow: Po pierwsze - nie tak dawno dowiedzialem sie, iz istnieje tutor angielskojezyczny do tego programu i ze jest on blednie napisany (bledy merytoryczne, niepozwalajace newbies na wykorzystanie informacji zawartym w tymze tutorze), sprawdzilem i owszem CrackZ (powiedzmy), pisal malo precyzyjnie... Drugi powod, stare programy zwykle bywaja gorzej zabezpieczone, i sa juz na tyle nieaktualne, iz autor niezbyt straci jezeli sobie potrenujemy na jego dziele.

Hmemcpy - chyba najczesciej spotykana funkcja API, jest wszechobecna pod WIN32, dzieki niej szybko sa przenoszone dane z jednej czesci pamieci do innej(alokacje). Czesto newbies sa przerazeni ta funkcja, gdyz nie moga znalezc wywolania programu, gdyz Hmemcpy wywoluje kilka, kilkanascie bibliotek, "podbibliotek",... i czesto trzeba sie nawciskac F12, aby dojsc do wlasciwego kodu :) Naucze Was dzis, jak wykorzystac ta potezna bron w odnajdywaniu wlasciwych danych rejestracyjnych.

Uruchamiamy VulcanNotes, wciskamy Close, gdy program prezentuje NagScreen'a, pokazalo sie okno programu, dobrze, widzimy, iz jest tam mozliwosc rejestracji "Register" => "Enter Registration Code", okno rejestracyjne to tradycyjnie:

Your Name
Serial#
Ja wpisalem:
Your Name   lukep
Serial#     9999x

Wchodzimy do SI, zastawiamy pulapke BPX hmemcpy i F5, wciskamy OK w Vnotes i jestesmy w SI w Kernel, naciskamy F11 a nastepnie F5 , aby wyjsc z SI (nas interesuje drugie okno z serialem),ponownie znalezlismy sie w Kernel, F11 i jestesmy w module User, teraz aby dostac sie do naszego programu musimy naciskac F12 (dokladnie 6 razy), znalezlismy sie w naszym programie VNOTES95! teraz musimy znalezc interesujacy nas kawalek kodu, znajdziemy go naciskajac kolejne piec razy F12, nie interesuja nas zadne instrukcje POP, zobaczymy cos takiego:

00464FF9   CALL      00414F00
00464FFE   MOV       EAX, [EBP-10] <= Tu jestesmy, widzimy w gornym prawym rogu SI SS:006CF64F=00C0A400, Wpisujemy d 00C0A400 i mamy nasz  niepoprawny serial
00465001   LEA       EDX, [EBP-14] 
00465004   CALL      00405A70
00465009   MOV       EAX, [EBP-14] <= znow SS:006CF648=00C04064 i d 00C04064 = nasz zly serial 
0046500C   PUSH      EAX           <= na stos wedruje nasz zly serial
0046500D   LEA       EDX, [EBP-10]
00465010   MOV       EAX, [EBP-04]
00465013   MOV       EAX, [EAX+000001B8]
00465019   CALL      00414FOO
0046501E   MOV       EAX, [EBP-10] <= wyjscie z VNOTES95!, aby tego uniknac klikamy myszka dwukrotnie na instrukcje 00465021, powinna sie podswietlic, wpisujemy BC0, i wychodzimy z SI, oczywiscie jestesmy znow 
00465021   LEA       EDX, [EBP-18] <= TU jestesmy !!!!!!!!
00465024   CALL      00464DF0      <= transformacje Name\Serial 
00465029   MOV       EDX, [EBP-18] <= To tu !!! SS:006CF644=00C04E4C, wpisujemy d 00C04E4C i ukazuje nam sie wlasciwy numer !!! Dla mojego lukep to: 624749154780968 !!!
0046502C   POP       EAX           <= zly kod jest sciagany ze stosu
0046502D   CALL      004036DC      <= porownanie kodow
00465032   JNZ       00465208      <= skok warunkowy

Jezeli bedziecie postepowac wedlug moich wskazowek nie powinniscie miec zadnych problemow ze znalezieniem poprawnego kodu. Program generuje takze falszywe kody, ale jak wspomnialem powyzej, idzcie wedle wskazan :)

Wpisujemy poprawny serial i dostajemy podziekowania !!!

Jezeli chcielibyscie aby program byl ponownie niezarejestrowany to usuncie z klucza rejestrow:

[HKEY_CURRENT_USER\SOFTWARE\Vulcan\Notes]
"Dimensions"="4957575748574950"
"Left"="303"
"Top"="139"
"Width"="250"
"Height"="350"
"ForeColor"="0"
"BackColor"="65535"
"ForeIndex"="0"
"BackIndex"="11"
"MainToolbar"="1"
"Scrollbar"="1"
"FontName"="Arial"
"FontSize"="11"
"FontBold"="0"
"FontItalic"="0"
"FontUnderline"="0"
"FontStrikeOut"="0"
"Hints"="1"
"ShowDateTime"="1"
"RunMinimized"="0"
"HideFlashScreen"="0"
"SoundIndex"="1"
"SoundFile"=""
"User"="lukep" <==== Usun !!!
"Serial"="624749154780968" <=== Usun !!!
"WindowState"="1"

i znow Vnotes95 bedzie niezarejestrowany.


HmemCpy po raz drugi

Software: MacroMagic 4.1 L <= CHIP 9\99

Ten program ma dwie mozliwe drogi rejestracji, pierwsza to tzw. Personal Edition mozna korzystac z makr stworzonych tylko na wlasnym komputerze, oraz tzw. MultiUser Editon - korzystamy wtedy z makr stworzonych przez innych urzytkownikow MM (Internet, inne stanowiska komputerowe).

Probowalem znalezc pole do wpisania kodu MUE lecz niestety wydaje mi sie, iz w tej kopi MM nie ma takiej mozliwosci, L przy numerze wersi MM tu chyba Light ??? Dobrze, tak wiec zajmiemy sie znalezieniem numeru do PE. Uruchamiamy program, naciskamy Enter License Code na pytanie czy jestesmy zarejestrowanym uzytkownikiem MM odpowiadamy nie, pojawia sie kolejny Box z pytaniem czy na pewno chcemy zarejestrowac wersje PE, odpowiadamy Tak, pojawia sie okno gdzie mozemy wpisac numer rejestracjny, ja wpisalem 9999x, wchodzimy do SI i zastawiamy pulapke BPX hmemcpy, wychodzimy z SI, wciskamy OK w oknie rejestracyjnym, pojawi nam sie SI z modulem Kernel, wciskamy F11 i jestesmy w User teraz bedziemy wciskac F12, dokladnie 11 razy, 6 razy aby znalezc sie w kodzie programu Macros! i kolejne 5 razy aby znalezc sie przy interesujacych nas instrukcjach (POP nas nie interesuje), widzimy cos takiego:

0045D3D9   CALL   00421DB0
0045D3DE   MOV    EAX, [EBP-28]  <- Tu jestesmy, widzimy w oknie rejestrow SS:0075F2AC=01192F98, sprawdzamy co jest pod 01192F98, nasz niepoprawny numer
0045D3E1   PUSH   EAX            <- Nasz niepoprawny numer idzie na stos 
0045D3E2   PUSH   DWORD PTR [EBP-08]
0045D3E5   PUSH   DWORD PTR [EBP-0C]
0045D3E8   LEA    EAX, [EBP-1C]
0045D3EB   CALL   0045D8F8      <- Generowanie poprawnego kodu !!!
0045D3F0   MOV    EDX, [EBP-1C] <- W rejestrach widzimy SS:0075F2B8=011DEA38, sprawdzamy co sie kryje pod 011DEA38, nasz poprawny numer :) 
0045D3F3   POP    EAX           <- Sciagany niepoprawny numer ze stosu
0045D3F4   CALL   00403DB0      <- Porownywanie, jezeli go przesledzimy to zobaczymy np. iz nasz poprawny kod musi miec 8 cyfr !!!!

Ja otrzymalem dwa poprawne tzw. Master Key : 18660563 oraz 18610988.

Wydaje mi sie jednak, iz 18660563 jest numerem w pelni dzialajacym, jestem przekonany, iz mozliwosci otrzymania numeru jest jeszcze wiecej. Sprobuj sam, moze otrzymasz swoj wlasny Master Key - ktory bedzie dzialal na wszystkich komputerach ??? :)))) !!! Jak widzicie funkcja Hmemcpy jest na tyle uniwersalna, iz mozna jej czesto uzywac i w szybki sposob uzyskiwac poprawne wyniki !!! Jest w niektorych przypadkach "jedyna" metoda na dostanie sie do kodu programu !!!


HERETIC II version 1.0

Nareszcie !!!! Musze z przykroscia stwierdzic, iz nikt z walczacych z Heretickiem2 jak dotad nie znalazl poprawnego rozwiazania, nawet moje podpowiedzi nie wplynely na poprawne rozwiazanie, nadszedl czas aby ujawnic sekret tej gry! Na poczatek nieco historii powstania zabezpieczenia tej gry, tworcy skupiali sie na zabezpieczeniu jej przed niekontrolowanemu i nielegalnemu kopiowaniu. Trzeba im przyznac, iz zrobili to dosc dobrze, gra podczas kopiowania zmieniala tak niektore swoje pliki, iz bylo niemozliwe jej poprawne odpalenie :) Jednak, jak to zwykle bywa Ebola Crew zdolala skopiowac dwie plyty z gra na jedna piracka. Slyszalem, iz Raven wydaje juz teraz jednoplytowa kopie tej gry!

Jednym z plikow modyfikowanych byl plik quake2.dll i tam wlasnie gra ma procedure sprawdzajaca CD. Poszukiwania SDR komunikatu ktory pokazywal sie po uruchomieniu gry bez CD ("You must have the Heretic II Cd in the drive to play"), doprowadzaly do blednych wnioskow.

Jezeli jednak wiemy, iz firma kladla przede wszystkim nacisk na nielegalne kopiowanie, moze trzeba szukac odnosnikow do komunikatow nastepujacej tresci: Error CD copy !, czy Cd failed, czy No cd, wiec szukajmy.

W32Dasm i SDR: Wkrotce znajdziemy:

"Copy protection failed !"
Klikamy na komunikat i jestesmy tu:
:1002EF90   CALL   1002EE50
:1002EF95   CMP    BYTE PTR [EAX], 00 <- czy Eax=1 ???
:1002EF98   JNE    1002EFC0           <- nasz dobry skok wykonuje sie tylko w przypadku gdy mamy  plyte w CD ROM-ie, czyli EAX=1
:1002EF9A   CALL   1002EF80
:1002EF9F   TEST   EAX, EAX
:1002EFA1   JE     1002EFB1

* Possible StringData Ref from Data Obj -> "Copy protection failed !"

Mozliwych rozwiazan jest wiele: Zamienic JNE na JMP, czyli offset 2EF98 z 75 na EB, lub instrukcje CMP BYTE PTR [EAX], 00 na BYTE PTR [EAX], 01, lub upewnic sie iz EAX jest zawsze 1...

Jak widzimy takze CD check'i moga sprawic trudnosc. Nalezy uwaznie obserwowac i wyciagac wnioski, oby prawidlowe. NIC NIE JEST NIEMOZLIWE !!!!

Powodzenia.

P.S. Ukazal sie patch do Sin'a 1.06, tak jak i wersja 1.04 i 1.05 nie posiada CD check'a :)


Time Limits

Software: CaptureEze Pro v.7.0 <= ENTER 8\99 CD1

Program to 45 dniowa wersja, po uplywie tego czasu wylancza sie. Sprobujemy powalczyc z tym programem :)

Jak zwykle, przestawiamy zegar, tak aby nasz okres trial sie skonczyl, uruchamiamy CaptureEze, pierwsze okno, naciskamy Continue Evaluation i otrzymujemy informacje, iz trial minal, mozemy jedynie wyjsc z programu.

Tym razem uzyjemy W32Dasm'a. Zapamietujemy komunikat i otwieramy plik czepro.exe w W32Dasm, po otwarciu szukamy w SDR odnosnika do tegoz komunikatu, wkrotce znajdziemy:

:0041A340   CMP DWORD PTR [EBP-04], 00005955
:0041A347   JE  0041A367                       <- skocz jezeli ostatni dzien trial

* Reference To: tl32v20.trialEnvironmentOpen, Ord:00094

:0041A34D   CALL DWORD PTR [00438A2C]
:0041A353   MOV  DWORD PTR [004363D4], 00005955
:0041A35D   MOV  EAX, 00000001
:0041A362   JMP  0041A439                      <- sprawdze jaki dzis dzien ?

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
 :0041A347(c)

:0041A367   CMP  DWORD PTR [EBP-04], 0000F90B
:0041A36E   JNE  0041A395                      

* Possible StringData Ref from Data Obj -> "Your CaptureEze trial period"
                                           "has expired."

Rozwiazanie naszego time limitu powinno teraz nie stanowic dla Was zadnego problemu. Wystarczy pozmieniac skoki warunkowe pod 0041A347 i(oraz) pod 0041A36E na skoki przeciwne, czyli JE na JNE, a JNE na JE... Zapisujemy offsety: 19747 oraz 1976E

Ostatecznie mozemy pozmieniac tylko offset 19747, sposobow na obejscie zabezpieczenia tego programu jest jeszcze kilka.

Kolejny program oszukany... ...I na tym koniec walki z tym programem, dlaczego...? Dlatego, iz moim zamiarem jest nauczenie jak lamac zabezpieczenia a nie jak pisac crack'i.

Mysle, iz ci z Was ktorzy sa naprawde zainteresowani real crakingiem poradza sobie z dwoma NagScreenami tegoz proga, a ci ktorzy mysla jak tanim kosztem zdobyc oprogramowanie beda musieli troche poklikac... Albo wyrwa kompletnego Crack'a z ktoregos Warezowego Site'a... :(

Milej zabawy.

To na tyle, drodzy moi. Mysle, iz ten Tutor pozwolil Wam na zdobycie kolejnych umiejetnosci. Mam nadzieje, iz bedzieci czerpac tylko same przyjemnosci z Crackingu\Reversingu, tak jak ja to czynie.


W nastepnym Tutorialu:

Prawdopodobnie bedzie w calosci poswiecony lamaniu programow Visual Basic /Smart Check/,lub bedzie o Donglach - Hard Crack !!! Moze wpadnie cos nowego, bardziej interesujacego ???


Links:


Thanx:

Anna, Martin, tkc, +ORC, Phrozen Crew, Crackpl, CP98nfo, mNICH, ... i dla mnostwa innych osob !!!

Do nastepnego spotkania ... Wkrotce !!!!!!!!!!!!!

Cheers

Lukep contact: lukep@gdansk.sprint.pl

Gdansk Wrzesien 1999