SoftICE

SoftICE
Oryginalni autorzy NuMega
Deweloperzy Oprogramowanie komputerowe
Pierwsze wydanie 1987 ; 36 lat temu ( 1987 ) (DOS)
Ostateczne wydanie
v4.05 / 2000 ; 23 lata temu ( 2000 )
System operacyjny Microsoft Windows
Typ Debuger
Licencja Prawnie zastrzeżony

SoftICE jest debuggerem trybu jądra dla DOS i Windows aż do Windows XP. Jest przeznaczony do pracy pod systemem Windows, dzięki czemu system operacyjny nie jest świadomy jego obecności. W przeciwieństwie do debuggera aplikacji, SoftICE jest w stanie zawiesić wszystkie operacje w systemie Windows na żądanie. Ze względu na swoje możliwości niskiego poziomu, SoftICE jest również popularny jako do łamania oprogramowania .

Microsoft oferuje dwa debuggery trybu jądra , WinDbg i KD, bez opłat. Jednak pełne możliwości WinDbg i KD są dostępne tylko wtedy, gdy używane są dwa połączone ze sobą komputery. Dlatego SoftICE jest wyjątkowo użytecznym narzędziem do trudnego rozwoju związanego ze sterownikami. Ostatnia wydana wersja była dla systemu Windows XP.

Istnieją starsze wersje dla systemu DOS i zgodnych systemów operacyjnych. SoftICE został pierwotnie wyprodukowany przez firmę o nazwie NuMega , a następnie został przejęty przez Compuware w 1997 r., który z kolei sprzedał własność firmie Micro Focus w 2009 r. Obecnie Micro Focus jest właścicielem kodu źródłowego i patentów, ale nie utrzymuje aktywnie SoftICE.

Nazewnictwo

„Soft” odnosi się do oprogramowania, a „ICE” to aluzja do emulatora w obwodzie .

Historia

Oryginalny SoftICE dla DOS został napisany w 1987 roku przez założycieli NuMega, Franka Grossmana i Jima Moskuna. Program napisany w asemblerze 80386 pełnił rolę systemu operacyjnego i uruchamiał oprogramowanie w wirtualnym trybie 8086 . Sprzedano go za 386 USD.

SoftICE/W (dla systemu Windows) został opracowany w latach 90. XX wieku i odegrał kluczową rolę w pisaniu „Undocumented Windows” autorstwa Andrew Schulmana, Davida Maxeya i Matta Pietreka . SoftICE/W wywodzi się z wcześniejszego, mniej znanego produktu SoftICE dla NetWare (32-bitowy tryb chroniony). Jedną z kluczowych zalet, jakie miał w porównaniu z debuggerami Microsoftu, było to, że umożliwiał debugowanie pojedynczej maszyny, zamiast wymagać podłączenia drugiej maszyny przez port szeregowy.

Głównymi twórcami SoftICE byli Dom Basile („Mr. SoftICE”), Tom Guinther (Kitchen Sink, Symbol Engine), Gerald Ryckman (sterowniki wideo i Kitchen Sink ), Ray Hsu (sterowniki wideo dla Windows 95) i Dan Babcock ( SoftICE/NT 3.1/3.5: uniwersalny sterownik wideo, silnik symboli), z udziałem różnych programistów NuMega, w tym Franka Grossmana, Jima Moskuna i Matta Pietreka.

W 1998 r. baza kodu dla SoftICE/95 została przeportowana do pracy na platformie Windows NT.

Nowsze wersje SoftICE łatają głęboko w Microsoft Windows. Jako takie, stare wersje SoftICE rzadko są kompatybilne z nowymi wersjami Windows. W związku z tym Compuware oferowało SoftICE jako subskrypcję, aby można było aktualizować i synchronizować z najnowszą wersją systemu Microsoft Windows.

Kiedyś był oferowany jako część pakietu DriverStudio firmy Compuware, ale został wycofany w kwietniu 2006 roku.

Zakończenie

Od 3 kwietnia 2006 r. Rodzina produktów DriverStudio została wycofana z powodu „różnych problemów technicznych i biznesowych, a także ogólnych warunków rynkowych”. Wsparcie serwisowe było oferowane do 31 marca 2007 roku.

Środki anty-SoftICE

Dostawcy oprogramowania wprowadzili szeroki zakres środków zaradczych, aby chronić się przed ludźmi wykorzystującymi SoftICE jako narzędzie do analizy oprogramowania.

Na przykład, oto kod używany przez niektórych dostawców do wykrywania obecności SoftICE działającego na tej samej maszynie jako wczesny środek zaradczy:

     
                    
                
                   
                
   0            
  mov  eax  ,  dword  ptr  [  pIDT  +  2  ]  ; eax -> IDT   dodaj  eax  ,  8  ; eax -> int 1 wektor   mov  ebx  ,  [  eax  ]  ; ebx == int 1 wektor   dodaj  eax  ,  16  ; eax -> int 3 wektor   mov  eax  ,  [  eax  ]  ; eax == int 3 wektor   i  eax  ,  FFFFh  ; zdejmij selektor   i   0            
                  
   
             
                             ebx  ,  FFFFh  ; część tego   sub  eax  ,  ebx  ; znaleźć przemieszczenie   cmp  eax  ,  10  h  jne  HackedVector  ; nie równe, to szanse są   ; SoftICE manipulował tymi wektorami  

Od tego czasu pojawiło się więcej i lepszych takich środków. Podczas gdy większość z nich może jedynie odstraszyć mniej doświadczonych i zdeterminowanych hakerów, SoftICE nie jest już narzędziem wybieranym przez kogoś nowego w analizie oprogramowania.

Obecnie mechanizmy obronne dostawców opierają się na bardziej wyrafinowanych programach pakujących/ochronnych, np. Themida, Armadillo czy ASProtect, które pakują kod programu i manipulują adresami punktu wejścia, przez co trudno jest znaleźć oryginalny punkt wejścia programu (OEP ) . Dotyczy to również tabeli adresów importu programu (IAT). Jednak dostępne są również narzędzia do ukrywania SoftICE, takie jak IceStealth i IceExt dla Windows NT lub Icedump i IcePatch dla Windows 9x.

Przyjęcie

W 1989 roku firma BYTE umieściła Soft-ICE wśród zdobywców „Wyróżnienia” nagród BYTE Awards, stwierdzając, że „Jeśli tworzysz aplikacje oparte na 8086 na maszynie 80386, jest to niezbędne i niedrogie narzędzie”.

Alternatywy

Komercyjny debugger na poziomie jądra o nazwie Syser twierdzi, że kontynuuje tam, gdzie przerwał SoftICE.

Debuger typu shareware, ale darmowy, OllyDbg to 32-bitowy debugger na poziomie asemblera autorstwa Oleha Yuschuka. Można go jednak używać tylko do debugowania w trybie użytkownika.

debuger jądra typu open source podobny do SoftICE o nazwie Rasta Ring 0 Debugger (RR0D). Zapewnia niskopoziomowe debugowanie dla systemów Microsoft Windows , Linux , OpenBSD , NetBSD i FreeBSD . Ten projekt nie wydaje się być aktywnie utrzymywany. Od czerwca 2016 r. Ostatnia zmiana w GitHub miała miejsce w grudniu 2008 r.

Debuger o nazwie BugChecker to 32-bitowy debuger jądra pojedynczego hosta dla systemów Windows 2000 i XP, opracowany i udostępniony jako open source do celów edukacyjnych. BugChecker umożliwia użytkownikom śledzenie zarówno kodu użytkownika, jak i jądra, zarówno w jednoprocesorowych, jak i wieloprocesorowych wersjach systemów Windows 2000 i XP.

Wiele hiperwizorów umożliwia debugowanie jądra działającego na maszynie wirtualnej poprzez udostępnienie pewnego rodzaju interfejsu debuggera, który może bezpośrednio sterować zwirtualizowanym procesorem. Pozwala to na debugowanie, nawet jeśli jądro nie ma natywnych funkcji debugowania.

Linki zewnętrzne