[ Pobierz całość w formacie PDF ]
.4.1.1.Pliki wykonywalne COMZe wzglêdu na sw¹ prost¹ budowê programy typu COM od pocz¹tku stanowi³ysmakowity k¹sek dla twórców wirusów.Zawieraj¹ one kod programu w tzw.postaciabsolutnej, dlatego te¿ ich ³adowanie do pamiêci polega na wczytaniu zawartoœcipliku pod adres znajduj¹cy siê bezpoœrednio po tworzonym dla ka¿dego procesubloku wstêpnym PSP i wykonaniu dalekiego skoku na pocz¹tek programu,a wiêc ich obraz w pamiêci jest wiern¹ kopi¹ zawartoœci pliku.Wygl¹d programuCOM po za³adowaniu do pamiêci przedstawia poni¿sza tabela.Wygl¹d programu COM po za³adowaniu do pamiêci:Adres (wzglêdem segmentu), do którego zosta³ za³adowany plik COMZawartoœæ pamiêciCS:0000-CS:0100Blok wstêpny PSP (patrz nastêpna tabela)CS:0000-CS:????Kod programu za³adowany z plikuFormat bloku wstêpnego programu PSPAdres w pamiêciZawartoœæ00-01Kod rozkazu int 21 h (CD 21)02-03Adres segmentu pamiêci niedostêpnej dla programu04Nie u¿ywane przez DOS, u¿ywane wewnêtrznie przez OS/205-09Dalekie odwo³anie do systemu DOS (rozkaz wywo³ania dalekiej procedury)06-07Rozmiar dostêpnej pamiêci w segmencie0A-0DZapamiêtywany adres zakoñczenia programu (int 22h)0E-11Adres programu obs³ugi CTRL-BREAK (int 23h)12-15Adres programu obs³ugi b³êdów krytycznych (int 24h)16-17Adres do segmentu pamiêci, gdzie znajduje siê blok PSPprogramu rodzicielskiego (interpretator poleceñ modyfikuje to pole i wstawiatam adres swojego PSP)18-2BTablica plików obs³ugiwanych przez proces JFT (ang.Job File Table); ka¿dyelement tablicy zawiera indeks wskazuj¹cy na element SFT (ang.System FileTable) opisuj¹cy wszystkie otwarte w systemie pliki lub te¿ wartoœæ FF, je¿elielement nie jest u¿ywany2C-2DAdres segmentu pamiêci, w którym znajduje siê otoczenie programu, zawieraj¹cedefinicje zmiennych œrodowiskowych systemu DOS, takich jak PATH, PROMPT Ud.Ka¿dy element otoczenia oddzielany jest znakiem NUL (kod 00); funkcja 4Brozszerza otoczenie programu poprzez dodanie jednego s³owa okreœlaj¹cego iloœædodatkowych ³añcuchów ASCIIZ (zwykle 0001), a nastêpnie umieszcza dalej nazwêuruchamianego programu.Umo¿liwia to procesowi dotarcie do pliku na dyskuzawieraj¹cego kod uruchomionego programu - jest to parametr paramstr(0) wPascalu i argv[0] w C.2E-31Zapamiêtane wartoœci SS:SP (u¿ywane podczas wywo³ywania funkcji DOS) aktualnegoprocesu; DOS zapamiêtuje je przed prze³¹czeniem siê na w³asny stos32-33Liczba elementów tablicy JFT (standardowo =20)34-37Daleki wskaŸnik do tablicy plików JFT (standardowo CS:18) umo¿liwiarozszerzenie iloœci plików wykorzystywanych przez proces38-3BDaleki wskaŸnik do poprzedniego bloku wstêpnego PSP3C-4FPola wykorzystywane wewnêtrznie przez ró¿ne systemy operacyjne50-52Kod rozkazów: INT 21 h RETF53-54Nie u¿ywane55-5BNie u¿ywane, mo¿na u¿yæ, aby zmieniæ standardowy blok FCB na rozszerzony blokFCB5C-6BStandardowy blok opisu pliku FCB16C-7BStandardowy blok opisu pliku FCB27C-7FNie u¿ywane80-FFBufor transmisji dyskowych DTA.Bezpoœrednio pouruchomieniu programu zawiera jego wiersz wejœciowy, zawieraj¹cy parametrypodane z linii poleceñ, zakoñczony znakiem CR (0D).Bajt pod adresem 80 okreœlad³ugoœæ wiersza wejœciowego nie uwzglêdniaj¹c znaku CR.Przekazuj¹c sterowanie do programu COM system DOS inicjuje kilka rejestrówustalonymi wartoœciami.Rejestry segmentowe CS, DS, SS, ES wskazuj¹ na adresbloku PSP programu, IP=100h, SP wskazuje na koniec pamiêci dostêpnej wsegmencie (zwykle FFFE), na stosie umieszczana jest wartoœæ 0000.Sposób infekcji plików COM jest bardzo prosty.Na koñcu zara¿anego pliku nale¿ydopisaæ kod wirusa, a na pocz¹tku pliku, po uprzednim zapamiêtaniu oryginalnychbajtów, umieœciæ rozkaz przenosz¹cy sterowanie do wirusa (najczêœciej jest to3-bajtowy rozkaz JMP NEAR, posiadaj¹cy kod maszynowy OE9h 00 00, gdzie 00 00jest wartoœci¹ dodawan¹ do wskaŸnika instrukcji IP po wykonaniu rozkazu).Pouruchomieniu sterowanie zostaje przekazane najpierw do wirusa, a ten z kolei,po wykonaniu odpowiednich czynnoœci, przywraca pocz¹tkowe bajty programu iwykonuje skok pod adres CS:0100h.Nie jest to jedyna metoda zara¿ania plików COM.Niektóre wirusy przesuwaj¹ wpliku kod oryginalnego programu, a w tak powsta³e miejsce wpisuj¹ swój kod.Zewzglêdu na wiêksz¹ iloœæ operacji, jakie musz¹ wykonaæ, aby zainfekowaæ plik,s¹ doœæ ³atwo wykrywane, gdy¿ znacz¹co opóŸniaj¹ wykonanie oryginalnychprogramów.Jeszcze inna metoda polega na umieszczeniu kodu wirusa w dowolnym miejscuinfekowanego pliku, jednak ze wzglêdu na trudnoœci implementacyjne jest onarzadko stosowana.Infekuj¹c pliki COM nale¿y pamiêtaæ, i¿ programy tego typu mog¹ mieæ d³ugoœænie wiêksz¹ ni¿ 64kB-100h-2 bajty.Odejmowana wartoœæ 100h jest d³ugoœci¹ blokuPSP, tworzonego na pocz¹tku segmentu, do którego ³adowany jest program
[ Pobierz całość w formacie PDF ]