[ Pobierz całość w formacie PDF ]
.6.4.1.Korzystanie ze stałych adresów w systemie (przerwania 21h i 2Fh)Ta metoda tunelingu jest możliwa tylko w wersjach DOS powyżej 5.00.Służy ona do przechwytywania obsługi przerwania 21h i ewentualnie 2Fh (przy okazji znajdowany jestoryginalny adres procedury obsługi tego przerwania, ulokowanej w kodzie systemuDOS).Wykorzystuje ona fakt, iż system DOS posiada w swym pierwszym bloku MCB(oznaczonym jako systemowy) standardową sekwencję kodu (taką samą dla obuprzerwań 21h i 2Fh), która została przedstawiona poniżej.Sekwencja kodu występująca w DOS od 5.0 wzwyżDOS używa HMA DOS nie używa HMAAdres Kod Znaczenie Kod ZnaczenieSEG:OFS 90 90 NOP NOP EB 03 JMP $+3SEG:OFS+2 E8 xxxx CALL [IP+xxxx] E8 xxxx CALL [IP+xxxx]2E FF 2E yyyy JMP FAR 2E FF 2E JMP FARSEG:OFS+5CS:[yyyy] CS:[yyyy]Dla przerwania 21h powyższa sekwencja kodu występuje pod adresem SEG:OFS, gdzieOFS jest równy 109Eh (w wersji DOS od 5.00 do 6,22) lub 0FB2h w wersjach powyżej6.22 (np.DOS 7.0, występujący z systemem Windows 95).W przypadku przerwania 2Fh OFS jest równy: 10C6h (dla DOS 5.00 - 6.22) i 0FDAh(dla wersji 7.00).Wartość SEG jest wartością zwracaną przez funkcję 52h w rejestrze ES.Na podstawiepowyższych danych łatwo odczytać adres pierwotnego adresu procedury int 21h,korzystając z następującej sekwencji:MOV AH,30H ; funkcja - we%0ń wersjU systemuINT 21h ; wywo%aj funkcjUXCHG AL,AH ; zabieg kosmetyczny - aby p�%0ńniejsze; por�wnanie by%o bardziej przejrzysteMOV BX,109EH ; offset dla wersji 5.00 - 6.22CMP AX,0500h ; czy wersjaJB NIEDZIA�A ; jeeli tak, to tunneling nie dzia%aCMP AX,0622h ; czy wersja wiUksza od 6.22 ?JB Wer5_6_22MOV BX,OFB2h ; nowsze wersje DOS - inny offsetWer5_6_22:PUSH BX ; zachowaj offset na stosieMOV AH,52h ; funkcja - podaj adres do LLINT 21h ; wywo%aj funkcjUPOP BX ; teraz ES:BX wskazuje na sekwencjU z tabeliCMP WORD PTR ES:[BX],9090h; czy jedna z sekwencji ?JE JEST ; jest czUe` sekwencjiCMP WORD PTR ES:[BX],03EBh ; czy druga z sekwencji ?JNE NIEDZIA�A ; nie ma sekwencji - tuneling nie dzia%aJEST:CMP BYTE PTR ES:[BX+2],OE8h; czy druga czUe` sekwencji ?JNE NIEDZIA�A ; nie ma sekwencji - tuneling nie dzia%aCMP WORD PTR ES:[BX+5],0FF2Eh ; czy trzecia czUe` sekwencji ? JNE NIEDZIA�A ; nie ma sekwencji - tuneling nie dzia%aCMP BYTE PTR ES:[BX+7],02Eh ; czy czwarta czUe` sekwencji ?JNE NIEDZIA�A ; nie ma sekwencji - tunelling nie dzia%a; znaleziona pe%na sekwencjaMOV BX,WORD PTR ES:[BX+8]LES BX,DWORD PTR ES:[BX] ; ES:BX wskazuje na oryginalny adres int 21hNIEDZIALA:Dla przerwania 2Fh sekwencja będzia wyglądała bardzo podobnie, z jedyną zmianą wprogramie wartości 0FS z 109Eh na 10C6h i 0FB2h na 0FDAh.6.4.2.Wykorzystanie trybu krokowego procesora (ang.tracing)Do znalezienia oryginalnych wejść do procedur obsługi przerwań można wykorzystaćtryb krokowy procesora.Po zainstalowaniu odpowiedniego monitora pod przerwaniemkrokowym wykonuje się jakąś testową funkcję, której wynik jest już wcześniej znany (np.przez uprzednie wywołanie tej funkcji bez monitora przerwania krokowego).Na bazietego możemy stwierdzić (będąc w procedurze obsługi przerwania krokowego), czyznajdujemy się w poszukiwanym, oryginalnym kodzie przerwania, poprzez testowaniezawartości odpowiedniego rejestru lub ich grupy.Dla przerwania int 21h wygodnie śledzić np.funkcję 62h (wez aktualny adres PSP) lubfunkcję 30h (wez numer wersji DOS), dla przerwania int 13h taką funkcją może być 08h(wez informację o parametrach dysku).6.4.3.Tuneling rekursywny (ang.recursive tunneling)Ze względu na możliwość blokowania trybu krokowego procesora do znalezieniaoryginalnego adresu przerwania 21h można zastosować tzw.tuneling rekursywny.Polega on na tym, iż w otoczeniu aktualnej procedury obsługi przerwania (wskazywanejprzez tablicę przerwań), poszukuje się kodów wywołań dalekich procedur lub skoków,dzięki którym zwykle przekazywane jest sterowanie do kolejnego elementu łańcuchaobsługi przerwania.Najczęściej łańcuch taki składa się z następujących sekwencji:Element_l.; pierwszy element %a�cuchaSkok_do_Elementu_2.; pamiU` wykorzystywana przez inne programyElement_2.; drugi element %a�cuchaSkok_do_Elementu_3.; pamiU` wykorzystywana przez inne programyElement_N [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ciaglawalka.htw.pl