24. L0phtCrack v2.5 krekinimas

Info:
Autorius: PauliuZ (pauliuz@xxx.lt, www.pauliuz.cjb.net)
Irankiai: SoftICE, WinDasm, UCOL Patch Maker, Betkoks šešioliktainis redaktorius
Taikinys: L0phtCrack v2.5 (www.l0pht.com/l0phtcrack)

Intro:
Šis tekstas yra skirtas tiktai mokslo tikslams ir teksto autorius neatsako už netinkamą jo naudojimą! O dabar jau galime pradėti.

Pora sakinių:
Būtų gerai, kad jūs turėtumėte bent „žalią" supratimą apie SoftICE, WinDasm, šešioliktainį redaktorių ir asembler kalbą. Bandysiu paaiškinti bent jau pagrindines SoftICE klavišų kombinacijas ir jos suderinimą.

Suderinimas:
SoftIce yra paleidžiama iš autoexec.bat paskutineje eilutėje įrašius: [kelias iki SoftIce]\winice.exe. Pvz.: C:\SoftICE\WinIce.exe, todėl SoftIce pasileidžia kraunantis windowzei.
Taip pat reikia suderinti ir winice.dat failą. Pateiksiu winice.dat failo fragmentus, kurie turi buti (daugtaškiai reiškia praleistas vietas):
...
INIT="CODE ON; X;"
...
EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
...
Kombinacijos:
Ctrl+D - įeiti į SoftICE;
F5 - įšeiti iš SoftICE;
F10 - vykdyti programą po vieną eilutę;
F8 - jeigu esame ant procedūros, įeiti į ją.
Visus įrankius galima atsisiųsti iš http://ucol.home.lt/cgi-bin/ucol.pl?l_tools.

Krekinimas:
Pirmiausiai reikia nukopijuoti failą l0phtcrack.exe į kokią saugią vietą (to reikės vėliau). Dabar paleidžiame pačią programą (L0phtCrack), spaudžiame mygtuką „Register" ir lauke „Unlock code:" įvedame betką ir žiūrime į iššokusią žinutę: "You have entered an invalid code. Please try again". Dabar įeiname į disasemblerį (WinDasm). Atidarome failą l0phtcrack.exe (jis yra krekinamos programos direktorijoje). Vykdome paiešką pagal matytą žinutę: "You have entered an invalid code", t.y. einame į WinDasm meniu sklitį „Search" ir vykdome komandą „Find Text". Lauke „Find what:" ir įvedame tą žinutę. WinDasm lange atsiduriame čia:
...
:0040635F 52 push edx
:00406360 50 push eax
:00406361 E8FAFE0100 call 00426260 <- unlock tikrinimas
:00406366 83C408 add esp, 00000008
:00406369 85C0 test eax, eax
:0040636B 7435 je 004063A2 <- ar mūsų unlock geras/blogas
:0040636D 6A00 push 00000000
:0040636F 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"You have entered an invalid code. "
->"Please try again." <- mūsų žinutė

:00406371 6830354800 push 00483530
:00406376 E8F0020500 call 0045666B
:0040637B 56 push esi
:0040637C 8D8C24E0000000 lea ecx, dword ptr [esp+000000E0]
:00406383 E812EE0300 call 0044519A
:00406388 8D8C2480000000 lea ecx, dword ptr [esp+00000080]
:0040638F E88ED50300 call 00443922
:00406394 83F801 cmp eax, 00000001
:00406397 0F846EFFFFFF je 0040630B
...

Dabar programą L0phtCrack užkrausime per SoftICE loaderį (loader32.exe). Užkrauname loaderį. Atidarome failą l0phtcrack.exe. Paskui užkrauname programą spausdami mygtuką „LOAD" arba eidami į programos meniu „MODULE/LOAD". Aktyvuojasi SoftICE, tada spaudžiame F8 (vieną sykį). Dabar rašome: Bpx 40635f (tai mes matėme disasembleryje). Bpx yra viena iš SoftICE komandų, o skaičius 40635f yra vykdomos programos eilutės vieta. Taigi įrašyta eilutė lieps SoftICE sustabdyti programos veikimą ties ta eilute. Suprantat link kur suku? Dabar išeiname iš SoftICE (F5). Pasileidžia L0phtCrack. Vėl einame į programos užregistravimo langą. Lauke „Unlock code:" surenkame sux.
Spaudžiame OK. Aktyvuojasi SoftICE. Matome labai panašų vaizdą kaip ir
Disasembleryje (WinDasm):
...
:0040635F 52 push edx
:00406360 50 push eax
:00406361 E8FAFE0100 call 00426260 <- unlock tikrinimas
:00406366 83C408 add esp, 00000008
:00406369 85C0 test eax, eax
:0040636B 7435 jz 004063A2 <- geras/blogas unlock
:0040636D 6A00 push 00000000
:0040636F 6A00 push 00000000
:00406371 6830354800 push 00483530
:00406376 E8F0020500 call 0045666B
:0040637B 56 push esi
:0040637C 8D8C24E0000000 lea ecx, dword ptr [esp+000000E0]
:00406383 E812EE0300 call 0044519A
:00406388 8D8C2480000000 lea ecx, dword ptr [esp+00000080]
:0040638F E88ED50300 call 00443922
:00406394 83F801 cmp eax, 00000001
:00406397 0F846EFFFFFF jz 0040630B
...

Rašome: d edx (Hmm kažkas yra. Užsirašome tai savo lape)
d eax (Mūsų įvestas "sux" (be kabučių))
Komanda d parodo registro (EAX, EDX…)turinį. Sintaksė yra tokia: d registras.

Uždraudžiame visų breakpointų (Bpx) naudojimą, t.y. parašome komandą BD *.
Išeiname iš SoftICE (F5). Dabar teksto lauke „Unlock code:" parašome tai ką
buvome užsirašę. Pas mane buvo 6be3b311. Spaudžiame OK. Bingo! Pasirodo žinutė: "You have successfully registered L0phtCrack 2.5". Tai reiškia, kad jūs sėkmingai užregistravote „L0phtCrack v2.5". Bet ne visi turi SoftICE ir Disassembler, todėl jūs turite padaryti patchą. Tai bus programa kuri žinutės pavidalu parodo unlock kodą. Bet jūs dabar jau užregistravote programą, todėl eikite į windows „Start" meniu ir vykdykite komnadą „Run", tada surinkite „regedit" (be kabučių). Atsiduriame programoje, kuri redaguoja windowz registrą. Einame į HKEY_CURRENT_USER\SOFTWARE\L0pht\L0phtCrack ir ištriname „Registration" stringą. Dabar jau galima daryti patchą.

Patcho darymas:
Einame į SoftICE(Ctrl+D). Surenkame komandą: Bpx MessageBoxA. Apie „Bpx" kalbėjau anksčiau, o apie „MessageBoxA" pakalbėsiu dabar. Tai yra standartinė API funkciją. Taigi mes su komanda „Bpx MessageBoxA" sustabdysime programą tada, kai ji vykdys šitą funkciją. Funkcija „MessageBoxA" išmeta žinutę. Dabar kur "Unlock code:" įvedame bet ką ir spaudžiame OK. Aktyvuojasi SoftICE. Mes esame procedūroje „MessageBoxA", kad išeitume iš jos mes turime spausti 8 sykius F10, kai atsiranda žinutė OK ir dar 2 sykius F10 arba vieną sykį F11 ir OK (nežinau
kas jums patinka labiau J). Mes išėjome iš procedūros. Štai ką matome:

...
:0045662E 53 Push EBX
:0045662F 57 Push EDI
:00456630 FF7508 Push DWORD PTR [EBP+08]
:00456633 FF75F4 Push DWORD PTR [EBP-0C]
:00456636 FF150014D100 Call [User32!MessageBoxA]
...

Parašome: Bpx 45662e (tai bus reikalinga vėliau).
Dabar turime ieškoti seniau surasto unlock kodo (pas mane buvo 6be3b311).
Rašome: d eax (Fuck!)
d edx (Fuck!)
d ebi (Fuck!)
d ebp (Štai jis čia!)

Radome, kad jis registre EBP, bet jis dar ne jo pradžioje, taigi rašome
d ebp+54 ir jis jau pradžioje. Jis randasi vietoje F7FBE4 (šešioliktainis
kodas). Patchas vietoj žinutes: "You have entered an invalid code. Please try
again", parodys unlock kodą. Taigi mes turime tą žinutę perdirbti. Procedūra MessageBoxA susideda iš šių dalių:

Push 00
Push <žinutės lango pavadinimas>
Push <žinutė>
Push 00
Call MessageBoxA

Mes jau žinome, kad unlock kodas yra vietoje F7FBE4 (šešioliktainis kodas), bet mums dar reikia žinutės lango pavadinimo. Mes padarysime taip, uždarome programą L0phtCrack. Failą l0phtcrack.exe atsidarome su šešioliktainiu redaktoriumi ir ieškome pagal frazę: "You have entered an invalid code" (be kabučių). Atsirandame vietoje 83530 (šešioliktainis kodas). Šita žinutė pakeičiame žinute: "Unlock kodas yra:" (be kabučių) + 00 (tai parodo, kad žinutė užsibaigia toje vietoje). Visas šešioliktainis kodas atrodys taip: 55 6E 6C 6F 63 6B 20 6B 6F 64 61 73 20 79 72 61 3A 00. Neužmirškite išsaugoti failą! SoftICE žinutės vieta yra kitur. Kyla klausimas kur? Mes tiesiog turime prie 400000 pridėti 83530 (vieta faile) ir gausime 483530 (šešioliktainis kodas). Tai ir yra vieta SoftICE. Štai turime ir lango pavadinimą ir žinutę. Tai atrodo taip:

Push 00
Push 483530
Push F7FBE4
Push 00
Call MessageBoxA

Dar atsimenate anksčiau uždėta breakpointą Bpx 45662e? Štai čia mes ir įdėsime šitą žinutę. Vėl einame į L0pthCrack. Renkame kokį nors blogą unlocką! Aktyvuojasi SoftICE ties 45662e. Užsirašome apie aštuonis šešioliktainius kodus: 53 57 FF 75 08 FF 75 F4 Jie bus pažymėti ^^^^^^^^^^ (kad jums būtų aiškiau). Jie bus reikalingi ieškant vietos su šešioliktainiu redaktoriumi:

...
:0045662E 53 Push EBX
__________^^
:0045662F 57 Push EDI
__________^^
:00456630 FF7508 Push DWORD PTR [EBP+08]
__________^^^^^^
:00456633 FF75F4 Push DWORD PTR [EBP-0C]
__________^^^^^^
:00456636 FF150014D100 Call [User32!MessageBoxA]
...

Dabar parašome komandą a (assembler). Spaudžiame klavišą enter ir parašome šias eilutes:

Push 00
Push 483530
Push F7FBE4
Push 00
Call MessageBoxA
Nop

Baigia rašyti, spaudžiame klavišą „Escape"! Komanda nop reikalinga, kadangi sugadinome vieną komandą, nes naujai žinutei prireikė daugiau baitų. Komanda buvo nepilna, todėl mes ją panaikinonome (NOP reiškia nieką. Ji tiesiog nevykdoma). Jeigu šito būtume nepadarę būtume sugadinę programą ir ji butų neveikusi!

Pakeistas kodas su SoftICE:

:0045662E 6A00 Push 00
:00456630 6830354800 Push 483530
:00456635 68E4FBF700 Push F7FBE4
:0045663A 6A00 Push 00
:0045663C E898D2B0BF90 Call USER32!MessageBoxA
:00456641 90 Nop

Pabaiga:
Dabar jau užsirašome visus pakeistus eilučių šešioliktainius kodus: 6A 00 68 30 35 48 00 68 E4 FB F7 00 6A 00 E8 98 D2 B0 BF 90. Išeiname iš SoftICE ir L0phtCrack. Einame į šešioliktainį redaktorių. Faile ieškome pagal tuos aštuonis anksčiau užsirašytus kodus: 53 57 FF 75 08 FF 75 F4 ir nuo tos vietos pakeičiame į pakeistus kodus: 6A 00 68 30 35 48 00 68 E4 FB F7 00 6A 00 E8 98 D2 B0 BF 90. Tai ir yra mūsų patchas. Dabar paleidžiame L0phtCrack ir einame surinkti unlock. Spaudžiame OK ir matome žinutę: „Unlock kodas yra:" XXXXXXXX (X yra bet koks simbolis). Spaudžiame OK ir renkame matytą kodą. Vėl atsiranda ta pati žinutė. Paspaudžiame OK ir mes jau užsiregistravę J. Taigi dabar mes turime nupachintą l0phtcrack.exe failą, bet toks failas yra didelis ir tik pas jus, todėl mes turime padaryti programa, kuri automatiškai, tą EXE failą nupatchintų. Tam ir reikalinga pradžioje minima programa „UCOL Patch Maker". Ar dar atsimenate, kad iš pat pradžių l0phtcrack.exe nukopijavote į saugią vietą? Taigi jūs turite ogiginalų ir nupatchintą failus, o ką toliau reikia daryti žiūrekite į programos „UCOL Patch Maker" aprašymą!

® 2002-2003 VaidaZ