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