Browserola 1.01 by Ptasiek

Cel : Browserola 1.01
Co  : serial
Czym: W32dasm+SoftICE
Skad: Pc shareware 2/99

Uruchamiamy Browserole. W dolnym rogu napis 'Evaluation Copy' Zostawmy go i przejdzmy do okienka rejestracyjnego proga. Wpiszmy jakis serial i nicka. I oczywiscie otrzymijemy wiadomosc podana nam milym glosem przez opalona blondyne (joke): 'This code does not match'. Zapuscmy W32dasm i zdisasmujmy proga: ->Disassember/Open File to Disassemble Nastepnie poszukajmy stringu informujacego nas o blednym serialu ('This code...'): ->Refs/String Data References Znajdujemy go i klikamy na nim dwukrotnie. W32dasm wyswietli nam kod, odnoszacy sie do tego stringu.

:00456CCC BAA06D4500              mov edx, 00456DA0
:00456CD1 8B83B0010000            mov eax, dword ptr [ebx+000001B0]
:00456CD7 E8A08FFDFF              call 0042FC7C
:00456CDC EB0A                    jmp 00456CE8

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00456CB2(C)
|

* Possible StringData Ref from Code Obj ->"The code does not match.  Please "
                                        ->"check your user name and  registration "
                                        ->"number and try again."
                                  |
:00456CDE B8B86D4500              mov eax, 00456DB8
:00456CE3 E878A4FDFF              call 00431160

Najblizszy skok do tego stringu jest z adresu 00456CB2. Zajrzyjmy tam ->Goto/Goto Code Location

:00456C8F 8B83B0010000            mov eax, dword ptr [ebx+000001B0]
:00456C95 E8E28FFDFF              call 0042FC7C
:00456C9A EB4C                    jmp 00456CE8

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00456C57(C), :00456C67(C)
|
:00456C9C 8D55F0                  lea edx, dword ptr [ebp-10]
:00456C9F 8B45FC                  mov eax, dword ptr [ebp-04]
:00456CA2 E88DEFFFFF              call 00455C34
:00456CA7 8B45F0                  mov eax, dword ptr [ebp-10]
:00456CAA 8B55F8                  mov edx, dword ptr [ebp-08]
:00456CAD E856CBFAFF              call 00403808 sprawdzanie poprawnosci seriala
:00456CB2 752A                    jne 00456CDE    Skok do BAD procki 
:00456CB4 C6050887460002          mov byte ptr [00468708], 02
:00456CBB 8B1504874600            mov edx, dword ptr [00468704]
:00456CC1 8B83D0010000            mov eax, dword ptr [ebx+000001D0]
:00456CC7 E830CAFBFF              call 004136FC

Zapiszmy adres procki, która jak przypuszczamy sprawdza nasz serial czyli: 00456CAD Zakonczmy teraz robote w W32dasm, listing nie bedzie juz potrzebny. Zaladujmy Browserole do Symbol Loadera. Przy starcie pojawi sie warning o braku róznych bayerów - zignoruj go i dzialaj dalej. Dobra wskoczyl SI - jestesmy w program entry point. Ustawmy breakpointa na nasza procke:

->bpx 456CAD 

No i zatrzymalismy sie na niej. Sprawdzmy ostatnie modyfikowane rejestry czyli eax i edx - w jednym z nich jest adres do naszego seriala, a w drugim do poprawnego:

->d eax
->d edx

Wyjdzmy z debuggera i zarejestrujmy proga pamietajac o wpisaniu nicka z poprzedniej próby rejestracji. (program generuje seriala na podstawie name). Na koniec wyjasnienie rozkazu mov edx, dword ptr [ebp-08] - wpisz do edx wartosc o dlugosci podwójnego slowa (4 bajty) spod adresu ebp-8. Jest to rozkaz, który przy przepisywaniu danych birze pod uwage PC-towski zapis slów -bajt starszy-bajt mlodszy.

Ptasiek/IND