LEKCJA2(4).TXT

(27 KB) Pobierz
Lekcja II - "SoftIce - podstawowe narzedzie, konfiguracja i uzytkowanie"

  a) instalacja SoftIce, wraz z mozliwymi problemami
  b) konfiguracja:
   - plik winice.dat wraz z srednikami
   - dostosowanie wygladu softice do preferencji uzytkownika (kolory,
     szerokosc i wysokosc okna, kolory, rozmiary czcionki itp.)
   - z SoftIce'm, czy bez niego (menu w autoexec'u)
  c) podstowe komendy (pulapki, szukanie, itp.)
  d) wyjasnienie zagadnien zwiazanych z softicem i debugowaniem w
     systemie windows
  e) omownienie roli loadera softice
  f) system pomocy dolaczony do softice
  g) problemy z uzytkowaniem softice
  h) debugujemy pierwszy program
   - funkcje API
   - pulapki
   - zmiany rejestrow i kodu
   - znajdowanie poprawnego kodu (zwykle porownanie cmp good, bad)
   - skoki warunkowe


                               Let's Begin:

  -----====== a) instalacja SoftIce, wraz z mozliwymi problemami =====-----

Instalacja SoftIce nie sprawia wiekszych problemow i z zalozenia powinna
przebiegac bez bledow i problemow ;-) Podczas tej instalacji nalezy podac
numer seryjny (znajduje sie on w wiekszosci dystrybucji... jesli jednak
go nie ma znajdziecie na stronie producenta czyli... www.numega.com).
Nastepnie musimy wybrac rodzja posiadanej przez nas karty graficzenej
(teoretycznie instalator powinien automatycznie wybrac nasz karte, ale
czasami trzeba mu pomoc). Sa tez do wyboru dwie opcje. Pierwsza z nich
oznaczona jako 'Universal Video Driver (SoftIce appears in Window)...',
jak sama nazwa wskazuje pozwala wlaczyc dzialania SoftIce w okienku.
Dla mnie jest to bardzo fajna rzecz, bo mozemy potem dowolnie manipulowac
wymiarami okna, tak azeby bylo widac kawalek normlanego ekranu. W  ogole
wlaczanie i wylaczanie debugera przebiega szybciej (im mniejsze okno).
Druga opcja pozwala nam wlaczyc monitor monochromatyczny. Przed przejsciem
dalej musimy tylko jeszcze kliknac przycisk 'test' ;-)
Na nastepnej stronie mozemy zdecydowac czy bedziemy uzywac myszki (musimy
wskazac port pod ktorym ona dziala). Jesli posiadamy myszke z rolkami i
innymi bajerami wlaczamy opcje na dole, SoftIce bardzo ladnie wspomaga
takie bajerki ;-)
Dalej mozemy pozwolic SoftIce'owi azeby dokonal modyfikacji w pliku
autoexec.bat. Teraz pozostaje nam tylko zresetowac komputer ;-)

                   -----====== b) konfiguracja: =====-----

Wbrew oczekiwania SoftIce jest bardzo prosto konfigurowalny, cala kwestia
polega na opanowaniu parunastu komend ;-)

         -----====== plik winice.dat wraz z srednikami =====-----

Ok, teraz chwila uwagi ;-) 90% newbies popelnia opisany nizej blad,
wiec jak mozesz to uwazaj... A wiec tak, azebys mogl uzywac funkcji
API w SoftIce musisz wlaczyc ich ladowanie przez SoftIce. W skrocie
zabieg ten polega na skasowaniu srednikow z pliku winice.dat. Nie
kasuje sie jednak wszystkich srednikow, tylko te w ostatniej sekcji,
oznaczonej jako:

; ***** Examples of export symbols that can be included for Windows 95 *****
;       Change the path to the appropriate drive and directory

Plik winice.dat znajduje sie w katalogu gdzie instalowales SoftIce
(standardowo c:\program files\numega\softice\winice.dat). Wyedytuj
sobie ten plik, ponizej tego napisu zobaczyc kolumne mniej wiecej
czegos podobnego do tego:

;EXP=c:\windows\system\kernel32.dll
;EXP=c:\windows\system\user32.dll

Musisz usunac wlasnie te sredniki po lewej stronie ;-) Zrob tak z cala ta
sekcja. Jesli bedziesz kasowal sredniki z innych sekcji SoftIce przy
zalaczaniu bedzie wywal ci blad (spowodowany nie odnalezieniem plikow
WinSDK). Azeby sprawdzic jakie funkcje sa ladowane przez SoftIce uzyj
komendy 'exp parametr'. Parametrem moze nie byc nic, pozwala on zawezic
obszar posuzkiwanych funkcji. Jest to taki filtr ;-) W skrocie wyglada
to tak, ze jak np. nie napiszesz nic to zaleje cie mnostwo nazw. Jesli
jednak uzyjesz jako parametru np. "GetWind" wyswietlone beda tylko
funkcje ktorych nazwa zaczyna sie od tego ciagu znakow.

W pliku winice.dat znajduje sie takze sekcja 'INIT', mozemy tam umiescic
zbior komend wykonywach zaraz po pierwszym zalaczeniu SoftIce. Mozemy
tam umiescic ile tylko komend chcemy, jednak kazda z nich od poprzedniej
musi byc oddzielonej srednikiem (inaczej wszystkie wykonaja sie jako
jedna komenda, a to wiadomo co spowoduje ;-)).

W winice.dat mozemy ustawic jeszcze mnostwo opcji, jak chocby skroty
klawiaturowe itp. Latwiej to jednak zmieniac z poziomu panelu sterowania
dostepnego w loaderze softice (zwanego 'symbol loader').

  ----===== dostosowanie wygladu softice do preferencji uzytkownika ====----

SoftIce daje sie bardzo latwo dostosowac do wymagan uzytkownika ;-) Ponizej
masz spis komend sluzacych do zmiany opcji:

width xx - zmienia szerokosc okna, standardowo: 80
lines xx - zmienia wysokosc okna, standardow: 30(?)
colors xx xx xx xx xx - zmienia kolory calego SoftIce, standardowo:
           07 0B 71 30 02
wc xx    - wielkosc okna kodu
wd xx    - ---- || ----  danych
wr xx    - wlacza/wylacza okno rejestrow

To by bylo w skrocie na tyle, teoretycznie mozna chyba wszystko zmienic,
co sie chce. A przynajmniej ja zawsze robilem z nim co chcialem. Zachecam
do poeksperymentowania z wartosciami, a nastepnie do zapisania winikow
do winice.dat, tak azeby nie trzeba bylo wszystkie za kazdym razem zmieniac.

    ----====z SoftIce'm, czy bez niego (menu w autoexec'u) ====----

Dobra a wiec SoftIce (SI) dziala mamy okienko, kolorki, firanki i inne bajery..., wiec jak juz wiesz, a jak nie to sie dowiesz ze SI laduje sie jeszcze przed Windows'em i czy tego chcesz czy nie SI bedzie za kazdym razem aktywny gdy uruchomisz komputer. No ale SI spowalnia kompa (bo caly czas dziala w tle), a czasem chcemy w cos pograc lub ogolnie robic inne rzeczy do ktorych SI nam nie jest wogole potrzebny (w koncu caly czas nie bedziemy crackowac ;->). Wiec jak zrobic aby SI sie nie ladowal. Mozna to zrobic na dwa sposoby (tyle mi jest znanych):
.1. Uruchomic komputer, wyedytowc plik 'Autoexec.bat' i przed linijka SI (u mnie C:\PROGRA~1\SOFTIC~1.05\WINICE.EXE) postawic slowko 'rem', zrestartowc komputer i nie ma SI, no ale my nie bedziemy tacy brutalni (zreszta za duzo roboty z tym rem'owaniem) i zrobimy to ladniej
.2. Zrobic w 'Autoexec.bat' tak ze jak uruchomimy kompa to zeby nas sie pytal czy chcemy ladowac SI czy nie, wiec piszemy albo Ctrl+c, i Ctrl+v i wklejamy do Autoexec'a
----------cut here---------
@echo off
cls
echo.
echo **Uruchomienie SoftIce'a**
echo *                        *
echo *   1. No SI !           *        
echo *   2. SoftIce w tle!    *
echo *                        *
echo **************************
choice /C:12 Wybierz cyfre:
IF ERRORLEVEL 2 GOTO soft
IF ERRORLEVEL 1 GOTO bez
GOTO koniec
:bez
GOTO koniec
:soft
C:\PROGRA~1\SOFTIC~1.05\WINICE.EXE
:koniec
---------end cut here------
wklej to na samym koncu w pliku 'Autoexec.bat' i ewentualnie zmien sciezke (na taka jak ty masz) do pliku winice.exe w przedostatniej linijce w tym co powyzej !!!
Zrestartuj kompa no i co... ale ladnie, teraz tylko wciskamy 1 lub 2 zalenie co chcemy !!!!

    -----======  c) podstowe komendy (pulapki, szukanie, itp.) =====-----

bpx nazwa_funkcji   - zalozenie polapki na wywolanie funkcji nazwa_funkcji

bpx adres           - zalozy polapke na adres np. bpx 00402034 zatrzyma
                        program przy tym adresie

s ds:0 l ffffffff "tekst" - przeszuka pamiec w poszukiwaniu textu 'tekst'

s                   - kontunuowanie poszukiwania
                      P.S. Gdy znajdziesz cos o adresie zaczynajacym sie od
                      8 i C to nie zpisuj tego!!! Jest to pamiec SoftIce i
                      ekranu!

bpm adres           - zalozenie polapki na adres, np. tego wyszukanego przez
                      SoftIca

bd numer            - wylaczenie polapki o numerze 'numer'

be numer            - wlaczenie polapki o numerze 'numer'

bc numer            - kasowanie polapki o numerze 'numer'

bl                  - spis polapek, te z gwiazdkami sa nieaktywne

a adres             - zmiana kodu w pamieci

d rejestr,adres     - wyswietla zawartosc adresu lub zmiennej

? rejestr           - pokazuje wartosc rejestru, pozwala takze przeprowadzac
                      male obliczenia, ale o tym kiedy indziej ;-)

bmsg hwnd funkcja   - polapka na wywolanie funkcji okna

bh                  - wyswietla historie breakpointow

bpio port           - polapka na dostep do portu

bpint przerywanie   - polapka na wywolanie przerywania

code on/off         - wlacza wystwietlanie kodow hexowych komend

cls                 - czysci ekran

faults on/off       - wlacza/wylacza obsluge faults'ow

help                - pomoc

i1here on/off       - wlacza pulapke na przerywanie #1

i3here on/off       - jak wyzej, ale na #3


Reszte komend poznacie z biegiem czasu i potrzeby ;-)


-----====== d) wyjasnienie zagadnien zwiazanych z softicem i debugowaniem w systemie windows =====-----

Debugowanie programow w systemie windows jest w zasadzie bardzo proste ;-)
W skrocie wyglada to tak, ze kazdy program dziala sobie w systemie spokojnie.
SoftIce jednak podpina sie pod niektore zachowania, funkcje etc. (zaleznie
od woli jego zarzadcy). W momecie przejecia kontroli SoftIce program
zostaje zatrzyma, przechodzi w tryb procesora zwany 'step by step'. Wyglada
to tak, ze program wykonywany jest instrukcja po instrukcji, a debuger ma
nad nim calkowita kontrole ;-) Inne procesy dzialaja jednak w tle
(w praktyce dzialaj tylko wtedy gdy zaczniemy poruszac sie po kodzie programu,
lub puscimy go wolno). W momencie uruchomienia SoftIce, nawet zegar systemowy
przestaje dzialac normalnie, dlatego nie dziw sie jak bedzie pokazywal
czas przesuniety o pare godzin ;-)

        -----====== e) omownienie roli loadera softice =====-----

Loader dolaczony do SoftIce umozlwia konfigura...
Zgłoś jeśli naruszono regulamin