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...
Daroo19