11. Freecell for Windows 98 SE krekinimas
Info:
Autorius: PauliuZ (pauliuz@xxx.lt, www.pauliuz.cjb.net)
Irankiai: SoftICE, Betkoks šešioliktainis redaktorius (http://ucol.home.lt/cgi-bin/ucol.pl?l_tools)
Taikinys: Žaidimas Freecell
Intro:
Šis tekstas yra skirtas tiktai mokslo tikslams ir teksto autorius neatsako
už netinkamą jo naudojimą! O dabar jau galime pradėti :]
Kam gi reikia krekinti Freecell? Jeigu žaidžiame šį žaidimą ir mums
niekaip nesiseka jį sužaisti, taigi mes norime iš jo išeiti ir vėl pradėti
iš naujo, bet išeinant pamatome dialogą: Are you sure you want to quit
this game?. Jeigu spaudžiame Yes, tai mums užskaitomas pralaimėjimas,
o mes to visai nenorime :] Todėl reikia padaryti, kad tas dialogas visai
neiššoktų ir nebūtų užskaitytas pralaimėjimas.
Pora sakinių:
Būtų gerai, kad jūs turėtumėte bent žalią" supratimą apie SoftICE,
šešioliktainius redaktorius ir assembler 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ą.
Krekinimas:
Jūs laisvai galite nukrekinti ir Freecell iš windows 95, ten viskas
labai panašu, nes kiek žiūrėjau failų dydžiai skiriasi tik keliais baitais.
Įeiname į žaidimą (Start\Programs\Accessories\Games\Freecell). Paleidžiame
jį (Game\New Game). Bandome išeiti iš jo. Pamatome dialogą: Are you sure
you want to quit this game?. Spaudžiame No (juk nenorime pralaimėti
:)). Einame į SoftICE (Ctrl+D). Rašome: bpx messagebox. Išeiname iš SoftICE
(F5). Vėl bandome išeiti. Aktyvuojasi SoftICE. Spaudžiame F11 (išėjimas
iš proceduros). Pasirodo dialogas. Spaudžiame No. Vėl aktyvuojasi SoftICE.
Štai ką matome:
...
:03D8 68D604
push ds
;dialogo parametras
:03DB 1E
push 56c
;dialogo parametras
:03DC 686C05
push ds
;dialogo parametras
:03DF 6A24
push 24
;dialogo parametras
:03E1 9A00009717 call user!messagebox
;iškviečiame dialogą
:03E6 3D0700
cmp ax,0007
;ar buvo paspausta No
:03E9 0F846E04 jz 085b
;jeigu paspaudėme No nedarom nieko
:03ED E8FE1A call 1eee
;užskaitome pralaimėjimą
:03F0 E80734
call 38ca
;užskaitome pralaimėjimą
:03F3 E9BFFE jmp 02b5
;nošokame į išėjimą
...
Užsirašome pilkai pažymėtys baitus (68D6041E686C056A24). Jų mums prireiks vėliau. Taigi mums reikia praleisti dialogą ir pralaimėjimo užrašymą ir iš karto nušokti į išėjimą. Tuo mums puikiai pasitarnauja pirmasis dialogo parametras, kuris užima tiek baitų kiek ir išėjimo komanda (jmp 02b5). Todėl tą dialogo parametrą (push ds) reikia pakeisti komada jmp 02b5. Rašome: bpx 3d8. Tai reiškia, kad SoftICE sustos toje vietoje, kai bus bandoma užkrauti pirmą dialogo parametrą. Išeiname iš SoftICE (F5). Bandome išeiti iš žaidimo. Aktyvuojasi SoftICE ties pirmu dialogo parametru. Rašome: a (tai reiškia, kad mes pakeisime komandą push ds kita). Dabar rašome jmp 02 b5 (keičiame komandą). Spaudžiame Enter, paskui Escape. Štai ką matome:
...
:03D8 E9DAFE jmp 02b5
;nošokame į išėjimą
:03DB 1E
push 56c
:03DC 686C05 push ds
:03DF 6A24
push 24
:03E1 9A00009717 call user!messagebox
:03E6 3D0700
cmp ax,0007
:03E9 0F846E04 jz 085b
:03ED E8FE1A call 1eee
:03F0 E80734
call 38ca
:03F3 E9BFFE jmp 02b5
...
Pasikeitė trys baitai, užsirašome raudonai pažymėtus (pasikeitusius) baitus (E9DAFE). Išeiname iš SoftICE (F5). Kartu su SoftICE užsidarė žaidimas ir nebuvo jokio dialogo. Einame į šešioliktainį redaktorių, atidarome faila freecell.exe, vykdome paiešką pagal pilkai pažymėtus užsirašytus baitus. Suradę juos, tris pirmus pakeičiame į raudonai pažymėtus užsirašytus baitus (E9DAFE), išsaugome failą. Išeiname iš šešioliktainio redaktoriaus.
Pabaiga:
Viskas žaidimas nukenksmintas. Pabandykite paleisti jį, šiek tiek
jame pažaisti ir išeiti. Ką matote? Jokio dialogo išeinant! Vėl įeiname
į žaidima, pažiūrime į rezultatus. Rezultatai tokie patys, pralaimėjimas
neužskaitytas! Bet žaidimas iki galo dar nenukrekintas, nes dialogas atsiranda
vykdant žaidimo meniu komandą Game\New Game antrą kartą. Šitą dialogą
pabandykite nukrekinti patys.
® 2002-2003 VaidaZ