Witam wszystkich po raz drugi, mam nadzieje, iz dzis nauczymy sie efektywnie crackowac nieco bardziej skomplikowane aplikacje (MS), tym razem prawie bez wyjatku bedziemy poslugiwac sie Soft Icem, znakomitym narzedziem od Numegi. Zapewne dosc dobrze zapoznaliscie sie juz z SI ale na poczatek przypomne od czego zaczac, czyli jak skonfigurowac SI. Odpowiem takze na kilka pytan ktore do mnie dotarly w zwiazku z CD checkami.
Panie i Panowie przedstawienie czas zaczac :)
Macie juz zainstalowanego SI na swoim komputerze, jezeli chcecie aby dzialaly standarowe 32bitowe wywolania funkcji API to nalezy nieco zmodyfikowac plik ktory znajdziemy w katalogu gdzie zainsalowalismy SI, plik ten to Winice.dat, tuz przy jego koncu znajdziemy cos takiego:
; ***** Examples of export symbols that can be included ***** ; Change the path to the appropriate drive and directory ; ***** Examples of export symbols that can be included for Windows 95 ***** ; Change the path to the appropriate drive and directory
pod tymi komunikatami znajdziemy szereg bibliotek 32 bitowych, przed kazda z nich znajdziesz myslnik ; nalezy skasowac myslniki przed wszystkimi bibliotekami z ktorych funkcji masz zamiar korzystac, na poczatek proponuje skasowanie przed:
EXP=c:\windows\system\vga.drv EXP=c:\windows\system\vga.3gr EXP=c:\windows\system\sound.drv EXP=c:\windows\system\mouse.drv EXP=c:\windows\system\netware.drv EXP=c:\windows\system\system.drv EXP=c:\windows\system\keyboard.drv EXP=c:\windows\system\toolhelp.dll EXP=c:\windows\system\shell.dll EXP=c:\windows\system\commdlg.dll EXP=c:\windows\system\olesvr.dll EXP=c:\windows\system\olecli.dll EXP=c:\windows\system\mmsystem.dll EXP=c:\windows\system\winoldap.mod EXP=c:\windows\progman.exe EXP=c:\windows\drwatson.exe EXP=c:\windows\system\kernel32.dll EXP=c:\windows\system\user32.dll EXP=c:\windows\system\gdi32.dll EXP=c:\windows\system\comdlg32.dll EXP=c:\windows\system\shell32.dll EXP=c:\windows\system\advapi32.dll EXP=c:\windows\system\shell232.dll EXP=c:\windows\system\comctl32.dll EXP=c:\windows\system\crtdll.dll EXP=c:\windows\system\version.dll EXP=c:\windows\system\netlib32.dll EXP=c:\windows\system\msshrui.dll EXP=c:\windows\system\msnet32.dll EXP=c:\windows\system\mspwl32.dll EXP=c:\windows\system\mpr.dll
gdy juz dojdziesz do wprawy bedziesz mogl zdecydowac ktore biblioteki sa Ci NIEZBEDNE !!! Jezeli masz zamiar crackowac programy napisane w Visual Basic, nalezy dopisac biblioteki VB, czyli EXP=c:\windows\system\vb... - tu wlasciwa nazwa biblioteki VB.
Aby jakiekolwiek zmiany zaskutkowaly, nalezy ZRESTARTOWAC komputer !!!
W Winice.dat znajdziesz jeszcze linie :
INIT="x;",zmien ja na (najczestsza konfiguracja) :
INIT="lines 60;color f a 4f 1f e;wd 22;wc 22;wr;code on;faults off;X;",
to ta czesc decyduje o tym co zobaczymy po wejsciu do SI. Mozesz ja dowolnie modyfikowac, wedle potrzeb. Jezeli masz rozna od 32 MB wielkosc pamieci RAM, to wpisz ta wartosc w linii:
PHYSMB=...
Jezeli masz inny procesor niz Pentium, czesto zaleca sie zmiane w linii: PENTIUM=ON na OFF. Ale OSTROZNIE, zrob to w ostatecznosci, gdy np. SI odmawia wspolpracy!!!
Jezeli wszystko sie wali, a po przejsciu do SI, system sie zawiesza, lub wystepuja inne nieprawidlowosci, to czesto pomaga zmiana ustawien karty graficznej (Display Adapter Selection ), na Standart VGA oraz Universal Video Driver, ukarze nam sie SI w oknie (sic!).
Makra- co tu pisac ulatwiaja zycie !!! Piszcie makra, ulepszajcie... Tak, ale co to jest??? Zapewne czesto przy szukaniu seriala bedziesz korzystac z kilku najpopularniejszych wywolan API getdlgitemtexta, getwindowtexta, messageboxa...Po co wpisywac za kazdym razem w oknie komend ich charakterystyke, skoro w pliku Winice mozemy zdefiniowac macro ktore bedzie zawieralo szereg podstawowych wywolan API i bedzie wywolywane komenda Macro XXX.
Gdzie dopisujemy makra? Tuz nad takim komunikatem w pliku Winice.dat:
; WINICE.DAT ; (SIW95\WINICE.DAT) ; for use with SoftICE Version 3.2 (Windows 95) ; 14 July 1997Przykladowe macro:
MACRO bpxget32=" bpx getdlgitemtexta; bpx getwindowtexta"
Pozniej w SI wywolujemy samo macro komenda macro bpxget32. Ulatwia to prace. Sprobuj !!! Softice'owa klawiszologia:
OK, to najwazniejsze sprawy jesli chodzi o Soft Ice'a. Trenujcie i czytajcie co sie da na temat SI !!!
Jest to maly (31Kb), stary Windowsowski programik, posiada bardzo proste zabezpieczenie. Po wpisaniu danych wymagany jest numer rejestracyjny do pelni szczescia. Czas przewidziany na jego zlamanie dwie minuty !!!
Uruchamiamy SC12 i widzimy okno Register! Jest tam mozliwosc rejestracji "Register...", oczywiscie klikamy na nie. Jestesmy w oknie rejestracyjnym i mamy tam:
Name: Code:
Ja wpisalem Name:lukep Code:9999x
wchodzimy do SI i wpisujemy BPX getdlgitemtexta
wychodzimy z SI i w oknie rejestracyjnym klikamy OK, jestesmy ponownie w SI, znalezlismy sie w bibliotece USER32, naciskamy F11, aby znalezc sie w naszym programie i mamy STARTCLN!, widzimy cos takiego:
004011AD 8B35D8924000 MOV ESI, [USER32!GETDLGITEMTEXTA] 004011B3 FFD6 CALL ESI 004011B5 8D442410 LEA EAX, [ESP+10] <===tu ladujemy 004011B9 6800010000 PUSH 00000100 004011BE 50 PUSH EAX 004011BF 6806040000 PUSH 00000406 004011C4 57 PUSH EDI 004011C5 FFD6 CALL ESI <===ponowne wywolanie getdlgitemtexta 004011C7 6830604000 PUSH 00406030 <===uupsss poprawny kod 004011CC 6830614000 PUSH 00406130 <===nasz Name !!! 004011D1 E8AA000000 CALL 00401280 004011D6 8D442418 LEA EAX, [ESP+18] 004011DA 83C408 ADD ESP, 08 004011DD 50 PUSH EAX 004011DE 6830604000 PUSH 00406030Jestesmy przy:
004011B5 8D442410 LEA EAX, [ESP+10]F10 kilka razy, az do
004011C5 FFD6 CALL ESInaciskamy ponownie F11, i znow jestesmy w naszym programie :
004011C7 6830604000 PUSH 00406030 dokladnie tu !
Wpisujemy d 00406030 i co widzimy porawny kod, w moim przypadku to 1196-11006-2465-477
przechodzimy linijke w dol (F10), d 00406130, nasz Name, czyscimy BrakePonint (BC0), wychodzimy z SI, uruchamiamy Start Clean'a 1.2 wpisujemu lukep i 1196-11006-2465-477, OK i...widzimy, iz program uruchamia sie z napisem Registered to lukep !!!
Proste, prawda...???Jak zwykle produkty MS probuja udawac, iz sa dobrze zabezpieczone, i wiem, iz czesto im sie to udaje, gdy poczatkujacy Cracker probuje wywolac glowny program zglaszaja mu sie przedziwne biblioteki, w naszym przykladzie nic nie znaczaca (?) biblioteka pd1oc.dll - dobry pomysl MS...
No tak ale jesli uzyjemy W32Dasm'a to odkryjemy, iz pd1oc jest zabezpieczona przed jego dzialaniem, nic nam nie powie... Moze IDA, no tak ale po co? Przedstawie Wam sposob w jaki mozna aktualnie oszukac wiekszosc aplikacji MS dostepnych w wersjach trial !!!
Zmieniamy date systemowa, tak aby czas trialu minal i uruchamiamy PhotoD., widzimy taki oto komunikat:
"The Microsoft PhotoDraw trial offer has expired."
Znajduje sie tam rowniez OK, jesli na niego klikniemy to wychodzimy z programu.
Musicie wiedziec, iz programisci MS kochaja wszystki najbardziej elementarne wywolania funkcji API i mozecie byc pewni, iz Getlocaltime, Getsystemtime, Gettimezoneinformation na pewno doprowadza Was do ciekawych schematow kodu, ale ja preferuje wywolanie Messageboxa na Nagscreen informujacy o koncu trialu !
Sprobujmy...Wchodzimy do SI, nastawiamy BPX Messageboxa, F5 uruchamiamy PhotoDraw i znow jestesmy w SI, znalezlismy sie w USER32!, naciskamy F11 wyszlismy z SI, naciskamy OK na messageboxa i znow SI tym razem w PD1OC!, naciskamy F12 i jest PHOTODRW!.Teraz musimy dotrzec do RET'a 000C, czyli F10, wyskoczylismy znow do PD1OC!, dokladnie w RET 000C, dalej F10 i ponownie jestesmy przy PHOTODRW!, widzimy cos takiego:
3000AE12 E859AA0E00 CALL 300F5870 3000AE17 83FE01 CMP ESI, 01 <= Tu jestesmy ! 3000AE1A 7407 JZ 3000AE23
To co nas najbardziej interesuje znajduje sie kilka instrukcji powyzej tego kawalka kodu, musimy przejsc tam naciskajac ctr + up arrow az zobaczymy cos takiego:
3000ADB8 83C404 ADD ESP, 04 3000ADBB 8D46FF LEA EAX, [ESP-01] 3000ADBE 83F805 CMP EAX, 05 3000ADC1 773D JA 3000AE00 3000ADC3 FF2485D8B60030 JMP [EAX*4+3000B6D8]i dalej:
3000ADFB E88E1B0000 CALL 3000C98E <-do pd1oc.dll 3000AE00 85F6 TEST ESI, ESI <-czy ESI jest 0, u nas nie jest 3000AE02 741F JZ 3000AE23 <-skocz jesli jest zero w ESI, dobry skok! 3000AE04 83FE07 CMP ESI, 07 3000AE07 741A JZ 3000AE23 <-Wszystko OK, dzialaj dalej !!!Jak nie wywal NagscreenCo dalej...?
Pomyslmy, mi przychodza na mysl dwa dobre pomysly, pierwszy zmieniamy 3000AE02 i 3000AE04 na skoki bezwarunkowe EB i program mysli iz jest wciaz w okresie trial, czyli spisujemy opcody: E88E1B000085F6741F83FE07741A i Hiew zmieniamy na: E88E1B000085F6EB1F83FE07EB1A i mamy bez ograniczen PhotoDraw, moglibysmy zmienic tylko 3000AE02, ale lepiej sie upewnic.
Drugi sposob: Postarajmy sie aby w EAX bylo na pewno 1, jak: zmieniajac 83C4048D46FF83F805773D na 83C40433C04883F805773D czyli zmienilismy instrukcje LEA EAX, [ESP-01] na XOR EAX, EAX + DEC EAX,
dalej szukamy: E88E1B000085F6741F83FE07741A i zmieniamy na: E88E1B000033F6741F83FE07741A, teraz mamy pewnosc, iz po naszej zmianie w 3000AE00 z TEST ESI, ESI na XOR ESI, ESI, jest w ESI 0 !!!
Obie metody sa dobre i obie dzialaja wspaniale!
Dostalem kilka pytan zwiazanych z grami i CD-checkami, postaram sie teraz na kilka z nich odpowiedziec:
Niesamowita gra. Instalujemy ja, wyjmujemy CD z napedu, odpalamy gre i widzimy info:
"Unable to find Turok2 CD"...etc.
Wlaczamy W32Dasm'a i otwieramy Turok2.exe, ..., nastepnie szukamy w SDR naszego komunikatu "Unable to find Turok2 CD", jest, klikamy na niego i znalezlismy sie mniej wiecej tu:
:004A025B 39B4244C050000 CMP DWORD PTR [ESP+0000054C], ESI
:004A0262 7430 JE 004A0294 <= dobry skok
:004A0264 39742414 CMP DWORD PTR [ESP+14], ESI
:004A0268 752A JNE 004A0294 <= dobry skok
:004A026A 8B942448050000 MOV EDX, DWORD PTR [ESP+00000548]
:004A0271 6A05 PUSH 00000005
* Possible String Data Ref from Data Obj -> "Turok CD Not Found !"
:004A0273 6810D65100 PUSH 0051D610
* Possible String Data Ref from Data Obj -> "Unable to find Turok2 CD, Verify"
-> "CD is in drive and no other application"
-> "is using CDROM Drive."
:004A0278 68B0D55100 PUSH 0051D5B0
itd.
Jak widzisz mamy dwie mozliwosci spatchowania tej gry, albo JE 004A0294 zamienic na JMP 004A0294 lub JNE 004A0294 na JMP 004A0294, lub spaczowac oba skoki!!!
Poza tymi dwoma jest jeszcze kilka innych sposobow... Czyli zmieniamy np.: offset A0268 z 752A na EB2A, F9, F10, odpalamy gre, !!!!!! Gramy bez CD.
Jesli ktos z Was lubi Mange, to jest to gra dla niego.
Mamy juz zainstalowana gre, wyjmujemy CD i odpalamy gre, widzimy cos takiego:
"Please insert the Shogo CD-ROM into your CD-ROM drive."
Otwieramy W32Dasm'a i szukamy, "Please insert the Shogo CD-ROM into your CD-ROM drive.", jest klikamy dwukrotnie i widzimy cos takiego:
:00401075 50 push eax * Possible Reference to String Resource ID=00008: "Please insert the Shogo CD-ROM into your CD-ROM drive." :00401076 6A08 push 00000008 :00401078 51 push ecx :00401079 FFD3 call ebx :0040107B 85C0 test eax, eax :0040107D 7524 jne 004010A3 * Possible StringData Ref from Data Obj ->"Please insert the game CD-ROM " przechodzimy kilka linijek kodu w gore, az zobaczymy: :0040103C 85C0 test eax, eax :0040103E C78424D8000000FFFFFFFF mov dword ptr [esp+000000D8], FFFFFFFF :00401049 0F8503010000 jne 00401152 <= nasz skok !!! :0040104F E86EE70100 call 0041F7C2 :00401054 8B4804 mov ecx, dword ptr [eax+04] :00401057 E8764E0100 call 00415ED2 :0040105C 8BAC24E0000000 mov ebp, dword ptr [esp+000000E0] * Reference To: USER32.LoadStringA, Ord:0183h <= wywolanie bardzo ciekawej funkcji API
Zrobienie crack'a to banalna sprawa zmienic : 0F8503010000 na 0F8403010000 i wszystko dziala bez CD !
Teraz sposob na SHOGO z uzyciem Soft Ice'a:Pierwszy sposob to ...Oczywiscie BPX LoadStringA, tylko uprzedzam, iz mozecie troche sie nawciskac F5, ale potem kilka linii kodu wzwyz i mamy:
C78424D8000000FFFFFFFF mov dword ptr [esp+000000D8], FFFFFFFF 0F8503010000 jne 00401152 <= nasz skok !!! E86EE70100 call 0041F7C2
Drugi sposob, lepszy: BPX messageboxa i podobnie jak w sposobie pierwszym szukamy naszego fragmentu kodu powyzej miejsca w jakim sie znalezlismy.
To na tyle jesli chodzi o CD-check'i.
Po instalacji przestawiamy date, tak aby Lview sie juz nie chcial uruchamiac. Ustawiamy BPX getsystemtime, uruchamiamy Lview i..., jestesmy juz w SI, dokladnie w KERNEL32, naciskamy F11, jestesmy w MSVCRT, F12 i MFC42, ponownie F12 i juz jest LVIEWPRO!, musimy jeszcze raz klepnac F12, aby znalezc sie bezposrednio w interesujacym nas miejscu!!! Widzimy:
004371A6 E874C0FCFF CALL 0040321F 004371AB 83C408 ADD ESP, 08 <= tu zladowalismy 004371AE 8BCF MOV ECX, EDI 004371B0 50 PUSH EAX 004371B1 E80CB4FCFF CALL 004025C2 004371B6 E8D8ABFCFF CALL 00401D93 004371BB 85C0 TEST EAX, EAX 004371BD 750C JNZ 004371CB 004371BF E882ADFCFF CALL 00401F46 004371C4 33C0 XOR EAX, EAX <= zerujemy Eax 004371C6 E98B030000 JMP 00437556 004371CB 8D542420 LEA EDX, [ESP+20] 004371CF 52 PUSH EDX 004371D0 E86AC8FCFF CALL 00403A3F 004371D5 83C404 ADD ESP, 04 004371D8 85C0 TEST EAX, EAX <= czy Eax rozne ??? Jesli rowne 004371DA 745C JZ 00437238 <= nasz skok ! 004371DC 837C242024 CMP DWORD PTR [ESP+20], 24
Co mozna zrobic? Zmienic 004371D8 TEST EAX, EAX na XOR EAX, EAX (33C0), lub zamienic 004371DA JZ na JMP (EB). Obie metody sa dobre i skuteczne. Teraz mozemy bez ograniczen korzystac z LView Pro 2.1 !!!
Samo pojecie wymyslil +ORC, ktory to namietnie stosowal je w swoich rewelacyjnych Tutorach. Zen Cracking to lamanie programow do ktorych ciezko znalezc kod zabezpieczajacy, czesto zaszyfrowany i skompresowany. Programy te to tzw."OverProtected", gdzie czesto zabezpieczen jest kilka i bardzo ciezko znalezc klucz do ich odblokowania (np. pluginy firmy Timeworks - jak dotad tylko grupa RADIUM moze poszczycic sie ich zlamaniem :) ). Do Zen Crackingu oprocz ogromnej wiedzy potrzebny jest przeblysk geniuszu. Przy programach "OverProtected" nalezy myslec niestandardowo, "wejsc" w program calym soba, poczuc go !
Ciagly trening moze doprowadzic Was do takiego stanu, iz bedziecie potrafili blyskawicznie znalezc ten wlasciwy fragment kodu...
Powodzenia :))))! Jezeli uwazasz, iz moglbys przylaczyc sie do tworzonej wlasnie grupy Crackerskiej to mailme: lukep@gdansk.sprint.pl !
Je¬eli zauwazyles jakies bledy napisz, brdr wdzieczny.
Mam nadzieje, i¬ pomoglem niekt¡rym z Was ...