Blog literacki, portal erotyczny - seks i humor nie z tej ziemi
Cel: Browserola 1.01
Co: serial
Czym: W32dasm+SoftICE
Skąd: Pc shareware 2/99
Uruchamiamy Browserolę. W dolnym rogu napis 'Evaluation Copy'
Zostawmy go i przejdźmy do okienka rejestracyjnego proga.
Wpiszmy jakiś serial i nicka. I oczywiście otrzymijemy wiadomość podaną nam miłym głosem przez opaloną blondynę
(joke):
'This code does not match'. Zapuśćmy W32dasm i zdisasmujmy proga:
->Disassember/Open File to Disassemble
Następnie poszukajmy stringu informującego nas o błędnym serialu
('This code...'):
->Refs/String Data References
Znajdujemy go i klikamy na nim dwukrotnie. W32dasm wyświetli nam kod, odnoszący się 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
--------------------------------------------------------------
Najbliższy 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 poprawności 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
Zakończmy teraz robotę w W32dasm, listing nie będzie już potrzebny.
Załadujmy Browserolę do Symbol Loadera. Przy starcie pojawi się warning o braku
różnych bayerów - zignoruj go i działaj dalej. Dobra wskoczył SI - jesteśmy w
program entry point. Ustawmy breakpointa na naszą prockę:
->bpx 456CAD
No i zatrzymaliśmy się na niej. Sprawdźmy 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
Wyjdźmy z debuggera i zarejestrujmy proga pamiętając o wpisaniu nicka z poprzedniej próby rejestracji.
(program generuje seriala na podstawie name). Na koniec wyjaśnienie rozkazu
mov edx, dword ptr [ebp-08] - wpisz do edx wartość o długości podwójnego słowa (4 bajty) spod adresu ebp-8.
Jest to rozkaz, który przy przepisywaniu danych birze pod uwagę PC-towski zapis słów -bajt starszy-bajt młodszy.
Jak ktoś czegoś NAPRAWDĘ nie rozumie to niech pisze:
Ptasiek/IND