SoftICE - SoftICE

SoftICE
Autori originali NuMega
Sviluppatore / i Compuware
Versione iniziale 1987 ; 33 anni fa (DOS)  ( 1987 )
Rilascio finale
v4.05 / 2000 ; 20 anni fa  ( 2000 )
Sistema operativo Microsoft Windows
genere Debugger
Licenza Proprietario

SoftICE è un debugger in modalità kernel per DOS e Windows fino a Windows XP. Fondamentalmente, è progettato per funzionare sotto Windows in modo tale che il sistema operativo non sia a conoscenza della sua presenza. A differenza di un debugger di applicazioni, SoftICE è in grado di sospendere tutte le operazioni in Windows quando richiesto. Per il debug del driver questo è fondamentale a causa del modo in cui si accede all'hardware e del kernel del sistema operativo. A causa delle sue capacità di basso livello, SoftICE è anche popolare come strumento di cracking del software .

Microsoft offre due debugger in modalità kernel , WinDbg e KD , gratuitamente. Tuttavia, le funzionalità complete di WinDbg e KD sono disponibili solo quando vengono utilizzati due computer collegati tra loro. SoftICE è quindi uno strumento eccezionalmente utile per lo sviluppo di driver difficili. L'ultima versione rilasciata era per Windows XP.

Esistono versioni precedenti per DOS e sistemi operativi compatibili. SoftICE è stato originariamente prodotto da una società chiamata NuMega , ed è stato successivamente acquisito da Compuware nel 1997, che a sua volta ha venduto la proprietà a Micro Focus nel 2009. Attualmente, Micro Focus possiede il codice sorgente e i brevetti, ma non mantiene attivamente SoftICE.

Denominazione

"Soft" si riferisce al software, e la parte "ICE" del nome è un'allusione al emulatore in-circuit .

Storia

L'originale SoftICE per DOS è stato scritto nel 1987 dai fondatori di NuMega Frank Grossman e Jim Moskun . Il programma, scritto in linguaggio assembly 80386 , ha svolto il ruolo di sistema operativo e ha eseguito il software in modalità 8086 virtuale . È stato venduto per $ 386.

SoftICE / W (per Windows) è stato sviluppato negli anni '90, ed è stato determinante nella scrittura di "Windows non documentato", di Andrew Schulman , David Maxey e Matt Pietrek . SoftICE / W è stato derivato da un prodotto precedente, meno conosciuto, SoftICE per NetWare (modalità protetta a 32 bit). Uno dei vantaggi principali che aveva rispetto ai debugger di Microsoft è che abilitava il debug di una singola macchina, piuttosto che richiedere la connessione di una seconda macchina su una porta seriale.

I principali sviluppatori di SoftICE erano Dom Basile ("Mr. SoftICE"), Tom Guinther (Kitchen Sink, Symbol Engine), Gerald Ryckman (driver video e Kitchen Sink ), Ray Hsu (driver video per Windows 95) e Dan Babcock ( SoftICE / NT 3.1 / 3.5: driver video universale, motore di simboli), con il contributo di una varietà di sviluppatori NuMega tra cui Frank Grossman, Jim Moskun e Matt Pietrek.

Nel 1998 il codice base per SoftICE / 95 è stato portato per funzionare sulla piattaforma Windows NT.

Le versioni più recenti di SoftICE vengono applicate in profondità a Microsoft Windows. Pertanto, le vecchie versioni di SoftICE sono raramente compatibili con le nuove versioni di Windows. Compuware ha quindi offerto SoftICE in abbonamento in modo che potesse essere mantenuto aggiornato e sincronizzato con l'ultima versione di Microsoft Windows.

Era offerto come parte del pacchetto DriverStudio di Compuware, ma è stato interrotto nell'aprile 2006.

Risoluzione

A partire dal 3 aprile 2006 la famiglia di prodotti DriverStudio è stata interrotta a causa di "una serie di problemi tecnici e aziendali, nonché condizioni generali di mercato". Il supporto per la manutenzione è stato offerto fino al 31 marzo 2007.

Misure Anti-SoftICE

I fornitori di software hanno messo in atto un'ampia gamma di contromisure per proteggersi dalle persone che utilizzano SoftICE come strumento per analizzare il software.

Ad esempio, ecco il codice utilizzato da alcuni fornitori per rilevare la presenza di SoftICE in esecuzione nella stessa macchina come contromisura anticipata:

 mov eax, dword ptr [pIDT+2]; eax -> IDT
 add eax, 8                 ; eax -> int 1 vector
 mov ebx, [eax]             ; ebx == int 1 vector
 add eax, 16                ; eax -> int 3 vector
 mov eax, [eax]             ; eax == int 3 vector
 and eax, 0FFFFh            ; strip the selector
 and ebx, 0FFFFh            ; part of it
 sub eax, ebx               ; find displacement
 cmp eax, 10h
jne  HackedVector           ; not equal, then chances are
                            ; SoftICE had tampered with these vectors

Da allora si sono evolute sempre più misure di questo tipo. Sebbene la maggior parte di loro possa solo scoraggiare gli hacker meno esperti e determinati, SoftICE non è più uno strumento preferito da chi non conosce il software.

Oggi le difese dei vendor si basano su packer / protettori più sofisticati, ad esempio Themida , Armadillo o ASProtect che imballano il codice del programma e manomettono gli indirizzi del punto di ingresso, quindi è difficile trovare il punto di ingresso originale ( OEP ) del programma. Ciò vale anche per la tabella degli indirizzi di importazione (IAT) del programma. Tuttavia sono disponibili anche strumenti per nascondere SoftICE, come IceStealth e IceExt per Windows NT, o Icedump e IcePatch per Windows 9x.

Ricezione

BYTE nel 1989 ha elencato Soft-ICE tra i vincitori "Distinction" dei BYTE Awards, affermando che "Se stai sviluppando applicazioni basate su 8086 su una macchina 80386, questo è uno strumento essenziale e conveniente".

Alternative

Un debugger commerciale a livello di kernel chiamato Syser afferma di continuare da dove SoftICE si era interrotto.

Un debugger shareware, ma gratuito, OllyDbg è un debugger a livello di assemblatore a 32 bit di Oleh Yuschuk. Tuttavia, può essere utilizzato solo per il debug in modalità utente.

È disponibile un debugger del kernel open source simile a SoftICE denominato Rasta Ring 0 Debugger (RR0D). Fornisce debug di basso livello per Microsoft Windows , Linux , OpenBSD , NetBSD e FreeBSD . Questo progetto non sembra essere mantenuto attivamente. A giugno 2016, l'ultima modifica nel suo repository di codice sorgente GitHub è avvenuta nel dicembre 2008.

LinICE è un altro debugger a livello di kernel con un look and feel SoftICE. A partire dal 2015, inoltre, non è stato aggiornato da diversi anni.

HyperDBG è un debugger a livello di kernel che sfrutta la virtualizzazione assistita da hardware. A partire dal 2011, è stato aggiornato l'ultima volta nel maggio 2010.

Un debugger chiamato BugChecker è un debugger del kernel a host singolo a 32 bit per Windows 2000 e XP, sviluppato e reso disponibile come open source per scopi didattici. BugChecker consente agli utenti di rintracciare sia il codice utente che quello del kernel, sia nelle versioni monoprocessore che multiprocessore di Windows 2000 e XP.

Molti hypervisor consentono il debug del kernel in esecuzione nella macchina virtuale esponendo un qualche tipo di interfaccia debugger in grado di controllare direttamente il processore virtualizzato. Ciò consente il debug anche se un kernel non dispone di funzionalità di debug native.

Riferimenti

link esterno