Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Amikor gyorsabb törni mint keresni, célpontban a BrowseGate 2.46

Maghiara


Amikor gyorsabb törni mint keresni, célpontban a BrowseGate 2.46

avagy

Mi úriemberek vagyunk, és szeretjük a jogtiszta(nak látszó) progikat



Készítette: sniper [HPA]

e-mail: sniper.@iname.com

web: https://www.sniper-hu.com

Tartalomjegyzék:

1. Hozzávalók 1 személyre

2. Érdemes tudni (tutorban használtak)

3. Vágjunk a sürüjébe

4. A fáradtság jelei

5. Eredmény

6. Finál(lé:)

1. Hozzávalók 1 személyre

BrowseGate 2.46 (helyi proxy, web, ftp-szerver, stb.) Lelôhelye:

https://www.deksoftware.com Papír, toll, Softice, 2 napi hideg élelem,

1 láda sör. Olyan manuális munka, Lukundoo után szabadon :)

2. Érdemes tudni (tutorban használtak)

SoftIce (SI) címzése megegyezik a Hiew Decode módjának címzésével,

vagyis nincs szükség ofszetcímre egy kódrész megnézésére, csak annyit

kell tennünk, hogy ugrásnál (F5) írjunk a címünk elejére egy pontot

(SI-ben ?. 74 lekérdezésénél megkapjuk a 74. sor hexa címét). SI-ban

[szögletes zárójelbe] foglaltak értékeket jelentenek. Pl. MOV

ECX,[EAX] esetén ecx-be EAX értéke kerül, míg MOV ECX,AL felállásnál

ECX-be egy offset cím kerül, ahonnan elôveszi majd az értéket (AL a 32

bites EAX regiszter alsó 8 bites része). SoftIce Symbol Loader,

Initialization string-be írjuk be x;code on;WD 3;wc 12;fault off;

valamint ellenôrízzük le a dll-ek használatát (win-ice.dat fájlban a

kernel32, user32, gdi32.dll-eket tartalmazó sorok elôl töröljük a ';'

bejegyzést) és indítsuk újra. ?-jellel lekérhetünk számok, kifejezések

vagy regiszter (pl. EAX) értékének hexa, decimál, ill. ASCII

megfelelôjét. SI-ben beírt szám mindig hexadecimális, ha decimális

számot akarunk beírni, akkor írjunk elé egy + (pozitív dec. számnál)

elôjelet. Hexadecimális számokat a szám elé biggyesztett kis h-betüvel

vagy (SI-ban, C nyelvben és így a jávában is) 0x-el szokás

megkülönböztetni. A sorozatok, tömbök 0. elemmel kezdôdnek (pl. 11.

elem sorszáma 10)

3. Vágjunk a sürüjébe

Serial Number-nek (SN) írjuk be: 12345678, Avtivation Key-nek (KY)

pedig 1234567891234-et (töltsük maxra). Rögtön észrevesszük, hogy a SN

8 karakter hosszú, a key pedig 13 karakteres. Nyomjunk rá egy Okét,

hátha mázlink van :) Pech, ez nem jött össze, de kaptunk egy

messagebox-ot. Softice-ban kérjünk egy megszakítát (CTRL+D) bpx

messageboxa, F5 majd OK és a háttérbôl elôlibben SI. Rögtön üssük is

le (a sörösüveg helyett ;) F11-et majd a BrowsGate dumáját okézzuk le.

Ismét az SI-ban találjuk magunkat a hívás alatt egy sorral ( .445886

call messageboxa). Gördüljönk fel pársornyit a .445845 call-ra ér

rakjunk ide egy BPX-et (kétkatt' balgombbal vagy a soron állva F9) és

ismét futtassuk le a tesztet (F5, OK). SI-ben a call alatt találunk

3db összehasonlítást: 1* CMP DWORD PTR [BBP+FFFFF770],00

/SN-nulla, rossz Kapcsoljuk be d3-al SI ablakját (ha a tutor elejét

átugrottuk volna ;-) és nézzük meg a CMP, milyen értéket hasonlít

össze 0-val (jobb egérkatt és 'display') megcsodálhatjuk a Data

ablakban: Na..-t aminek a HEXA értéke 4E 61 BC 00 kérdezzük meg SI-t

mennyi ennek a decimális értéke: ?BC614E ami 12345678-al azaz SN-el

egyenlô. De mi van ha 0-la? akkor egy rossz címre, .445874-re ugrik,

és nem fogadja el. 2* CMP DWORD PTR [SN],E4E1C0 /SN>15000000, Ok

E41C0=15000000 ami szintén 8 karakter, vagyis ha tovább akarunk menni

akkor SN>15000000 feltételnek teljesülnie kell. Írjuk át a

termékszámunkat 15000000-ra majd ok és F10-el haladjunk tovább. 3* CMP

DWORD PTR [SN],E6685F /SN<15099999, Ok Töröljük bc 1 paranccsal (bl-el

kilistázhatjuk a BPX-eket) a call megszakítását és keressük meg a

következô hibaüzenet elôtti call-t (.4459D3) és lépjünk bele (F8).

Nyomuljunk tovább (F10).

420FC8 MOV DWORD PTR [EBP-10],00000000 /EBP-10-et nullázza

420FD1 MOV EAX, [EBP-10] /EBP-10 értékét (ciklusszám) EAX-be

teszi

420FD4 ADD EAX,01 /EAX-et növeli

420FD7 MOV [EBP-10],EAX /eltárolja EAX-et

420FDA CMP DWORD PTR [EBP-10],32

420FDE JGE 420FF9 /ha EBP-10 értéke >= h32-nél(50) ugrik

420FE0 MOVSX ECX,[EBP+8] /ECX a KY-re fog mutatni

420FE3 MOV EDX,BYTE PTR [ECX+3] /EDX-be KY4 karaktere kerül

(0-tól számolva 3.)

420FE7 MOV EAX,[EBP-10] /EAX-be ciklusszám



420FEA MOVSX ECX,BYTE PTR [EAX+4770B8] /ECX-be EAX+kódtábla kezdô címe

420FF1 CMP EDX,ECX /KY4 egyenlô-e a kódtábla aktuális betüjével

420FF3 JNZ 420FF7 /ha nem, közvetve ugrik 420FD1-re

420FF5 JMP 420FF9 /a kódtábla betüje egyezik KY 4.-al

420FF7 JMP 420FD1 /új ciklus (kódtábla következô betüje)

420FF9 CMP DWORD PTR [EBP-10],32 /ellenôrzi a ciklusok számát

120FFD JNZ 421007 /ha nem lépte túl a kódtáblát, akkor ugrik

tovább

Elôzô sorokban lecsekkelte hogy KY 4. betüje hányadik betüként

szerepel   a kódtáblában EBP-10 értéke által mutatott címre. Kódtábla

(51 betübôl áll, és természetesen 0-val kezdi a számolást):

FJHInNTUdeLMabPQKcfghijkmGXRSuVvwDxyzABZoWYpqCErst

Most tudjuk milyen betük szerepelhetnek a Key-ben. Töltsük fel a

Activition Key-t 13db W-vel. Töröljük a Call-os bpx-et (bc, F9 vagy

duplakatt) és kérjünk egy megszakítást a ciklus végi CMP-re. Ez azért

jó, mert nem kell F10-el végig trészelni a betü kódtáblában való

keresését. Ez minden ciklusnál tegyük meg, és így elég egy ciklust

végignyomni F10-el, és utána F5-el a "végére" állunk. Következô

blokkban bekéri a Action Key 8. betüjét és megkeresi annak a kódtábla

szerinti értékét. Hasonlóan müködik mint az elôzô blokk, csak most nem

[EBP-10]-be, hanem [EBP-14]-be fogja eltárolni a KY 8. kódtábla

szerinti értékét.

42104C MOV EDX,[EBP-14] /KY8 értéke

42104F CMP EDX,[EBP-10] /KY4 értéke

421052 JLE 42105F /ugrik ha KY8 >= KY4 értékénél írjuk át a Key 8.

betüjét egyel nagyobbra értékü betüre(Y-ra), így nem ugrik tovább.

421054 MOV EAX,[EBP-14]

421057 SUB EAX,[EBP-10] /KY8-KY4 értéke

42105A MOV [EBP-14],EAX

42105D JMP 42106D

421070 MOV BYTE PTR [EDX],30 /nullát ír EDX által mutatott értékre

Nézzük meg EDX értékét (h70E4B8) és írjuk fel. Tovább haladva

láthatjuk hogy egymás után nullázza a bájtokat pontosan 8-at. Tehát

h70E4B8 fogja tárolni a betükbôl generált számokat.

Rakjunk a következô keresô ciklus (CMP [EBP-0C],32) végére egy BPX-et,

és nézzük meg a következô key betüt (ECX+4 azaz 5.) és üssünk F5-öt.

4210E3 MOV EAX,[EBP-0C] /KY5 értékét mozgatja EAX-be

4210E6 CMP EAX,[EBP-10]

4210E9 JLE 4210F9

Itt leellenôrizte hogy a KY5>=KY4-tôl, így a következô történik:

4210F9 MOV EDX,32

4210FE SUB EDX,[EBP-10] /EDX-bôl kivonja KY4 kódtáblában való értékét

421101 MOV EAX,[EBP-0C] /EAX-be berakja KY5 kódtáblás értékét

421104 LEA ECX,[EAX+EDX-1] /ECX-be KY5+KY4-1 érték kerül

421108 MOV [EBP-4],ECX /EBP-4 címére(#70DF48) eltárolja a

kiszámoltakat

***Nézzük meg, ha kisebb KY5(p) KY4-tôl:

4210EB MOV ECX,[EBP-0C]

4210EE SUB ECX,[EBP-10] /KY5 értékébôl kivonja KY4 értékét

4210F1 SUB ECX,1 /és még 1-et

4210F4 MOV [EBP-04],ECX /kapottat eltárolja [EBP-4]-re

42110B MOV EDX,[EBP-04]

42110B ADD EDX,30 /(KY5-K4Y-1)-hez+30

421111 MOV EAX,[EBP+0C]

421114 MOV [EAX+7],DL /EDX regiszter alsó 8 bites részét

eltárolja SN

8. számaként(1) azért 1 mert #31 vagyis 49 ASCII kódja 1

Következik a KY 6., mivel megin >= lett írjuk át E-re. Mostantól

mindig az elôzô szám táblázatbani értékébôl számítja ki a következô

key értékének megfelelô serial number-t ami most a 7. lesz(2) 3. KY

írjuk át E-re, ha megnézzük most is >= lett és a 6. szám ís a betü,

ami biztos hogy nem jó. Most számoljuk ki mikor lesz szám, .4210F9

alapján (hexában számolva): (KY3+(32-KY6)-1)+30 0+32-2E-1+30=33 ez

decimálisan 51 vagyis 3 lesz a 6. SN Következô KY a 9. ami az SN5 ért

felel majd KY12-SN4, KY10-SN3, KY13-SN2, KY1-SN1 Mivel értelmes számot

kell kapnunk, számoljunk tovább SN3-tól ami F volt melynek értéke 0 a

táblázatban, így biztos hogy a következô KY nagyobb lesz vagyis

.4210EB-tôl kell számolni: SN4=KY9-KY3-1+30 vagyis SN4 legyen 4, akkor

34=x-0-1+30 KY9=5 azaz a 6. betü a táblázatban (N) 35=KY12-5-1+30,

KY12=11 (M) SN3=0, SN2=5, SN1=1 nek kell lennie, vagyis K10 értéke K12

+1 lesz azaz 'a' betü ekkor ugyanis 0-át kapunk. Ebbôl adódik KY13

(SN2=5) sorsa is aminek +6-nak kell lennie (f) és K1(SN1=1)=h Írjuk be



eddigi munkánk gyümölcsét: SN=15054321, KY=hWFWpEWYNaWMf Gondolnánk

(rosszul :) hogy minden rendben, de akkor mire való a többi "szabadon

hagyott" kulcs. Ha minden jól ment akkor most a KY11 van soron

.4214BD-nél. Itt a szokásost müveli, csak most nem a serial

numberünket állítja elô, hanem mit? (Én már tudom, de te még nem

tudhatod ;-) fogalmam sincs. Nézzük meg a szokásos tároló részt:

4214F6 ADD EAX,32

4214F9 MOV ECX,[EBP+10]

4214FC MOV [ECX],AL /[ECX]=70E7CC, ide rakta le a generált számot

Ami most D bötü => nem szám :) tehát nem kóser. Kerüljön ide 1:

K11=h+2=j KY7 legyen 2: KY7=j+3=G KY2 legyen 3: KY2=G+4=u Vége a

kulcskészítésnek és visszatér a Call-ból .4459D8-hoz

Mostani serial számunk: 15054321, kulcsunk pedig: huFWpEGYNajMf Itt

még van egy W lógóba, amit rögvest használni is fogunk, tehát nem

dísznek van :-( Call után ezt tapasztaljuk:

4459DB CMP EAX,8

4459DE JZ /Jó megoldás

4459F2 Call messagebox /hiba

Ezek szerint pontosan 8-nak kell lenie EAX-ben

Most nézzük meg a visszatérés elôtti dolgokat:

4215EA MOV [EAX+2],DL /3. számot(3) eltárolja

4215ED MOV ECX,[EBP-0C]

4215F0 MOV [EBP-10],ECX

4215F3 MOV EAX,[EBP-14] /70DF38 értékét betölti EAX-be

Honnan kóborolt ide 1? a., Az elején volt két kulcs, amibôl nem

generált számot és használta EBP-14 értékét is. Valószínü innen jött.

b., Rögtön megtudjuk, ha megnézzük SI dataablakjába 70DF38-at(D

70DF38), miközben végigrohanunk az eddig kirakott megszakításokon.

Tehát a második megszakításnál KY8-at használja fel, és ezt tárolja

[EBP-14] által mutatott helyre. Így lett .42103E címnél (2.

megszakítás) 70DF38 értéke 2A majd kivonja EBP-10 értékét és

visszatárolja (a szövegben feljebb pontosan láthatjuk). A lényeg ez a

kivonás: KY8-KY4 értéke=W-j=2A-29=1-el. Nekünk 8-ra van szükségunk,

ezért KY8 értékét 2A-x=8 nak kell teljesülnie, ami hexa 22 vagyis 34

ami 'x'-nek felel meg.

4. A fáradtság jelei

Most már mindent megtudtunk, SN=15054321 KY=huFxpEGYNajMf és még

mindig nem megy.

445A26 CALL

445A2E TEST EAX,EAX /ff-van tele

445A30 JZ /ha nulla akkor jó

445A44 CALL messagebox /rossz

Vizsgáljuk meg mi van a call-ban. Így a vége felé legjobb volna egy

kis erjesztett lótej vagy egy hideg, dobozos sör :) A call-ban ezt

böngészhetjük:

45F5E0 MOV EAX,[EDX] /számunk

45F5E2 CMP AL,[ECX] /helyes szám

45F5E4 JNZ 45F614

Bingó! Persze az elôbb megváltozott a számunk is mivel (mindjárt kel a

nap:) KY4-et W-rôl x-re írtuk át az utolsó számunk is megváltozott, ez

már a fáradtság jele.

5. Eredmény

A jó szám: 15054328, a helyes kóddal: huFxpEGYNajMf Pötyögjük be és

ámuljunk azon, hogy milyen "értelmes" (értelmetlen) is voltam, hisz

sokkal gyorsabb lett volna feltörni ;) de mi Úriemberek vagyunk, és

szeretjük a jogtiszta(nak látszó) progokat! A prog' gratulál, jó

munkát végeztünk!

Újraindítás után -lôn világosság- a harmadik sorból kiderül mi is volt

az a fránya 3 darab szám 70E7CC-n. 123 felhasználóra van linceszünk,

úgyhogy lehet hálózatra kötni, de csak 123 felhasználóig, különben

balhé lesz ;-)

6. Finál(lé:)

Remélem sikerült a szokásostól eltérô (beírom, SI-ban kiolvasom)

kódgenerálást bemutatnom, és hasznosítható ötletekkel szolgálnom.

A'szem én meghagyom másnak a tutorial írás gyönyöreit (fôleg a

szenvedéseit;) Lukundoo edzett hadtársunknak valamint -remélem-

csapatban maradt SmArt barátunknak és a többi HPA tagnak, TI jÖTtöK!?




Document Info


Accesari: 805
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )