Soft Ice - SoftICE
| Ursprüngliche Autor (en) | NuMega |
|---|---|
| Entwickler | Compuware |
| Erstveröffentlichung | 1987 (DOS) |
| Endgültige Veröffentlichung | v4.05 / 2000
|
| Betriebssystem | Microsoft Windows |
| Art | Debugger |
| Lizenz | Proprietär |
SoftICE ist ein Kernelmodus- Debugger für DOS und Windows bis Windows XP. Entscheidend ist, dass es unter Windows ausgeführt werden kann, sodass das Betriebssystem seine Anwesenheit nicht bemerkt. Im Gegensatz zu einem Anwendungsdebugger kann SoftICE alle Vorgänge in Windows auf Anweisung anhalten. Für das Debuggen von Treibern ist dies wichtig, da auf Hardware zugegriffen wird und der Kernel des Betriebssystems funktioniert. Aufgrund seiner geringen Funktionen ist SoftICE auch als Software-Cracking- Tool beliebt .
Microsoft bietet zwei Kernel- Modus-Debugger, WinDbg und KD , kostenlos an. Die vollen Funktionen von WinDbg und KD sind jedoch nur verfügbar, wenn zwei miteinander verbundene Computer verwendet werden. SoftICE ist daher ein außerordentlich nützliches Werkzeug für die schwierige fahrerbezogene Entwicklung. Die letzte veröffentlichte Version war für Windows XP.
Es gibt ältere Versionen für DOS und kompatible Betriebssysteme. SoftICE wurde ursprünglich von einer Firma namens NuMega hergestellt und 1997 von Compuware übernommen, die die Immobilie 2009 an Micro Focus verkaufte. Derzeit besitzt Micro Focus den Quellcode und die Patente, unterhält SoftICE jedoch nicht aktiv.
Benennung
"Soft" bezieht sich auf Software, und der "ICE" -Teil des Namens ist eine Anspielung auf den In-Circuit-Emulator .
Geschichte
Das Original SoftICE für DOS wurde 1987 von den NuMega-Gründern Frank Grossman und Jim Moskun geschrieben . Das in der Assemblersprache 80386 geschriebene Programm spielte die Rolle eines Betriebssystems und führte Software im virtuellen 8086-Modus aus . Es wurde für 386 US-Dollar verkauft.
SoftICE / W (für Windows) wurde in den 1990er Jahren entwickelt und war maßgeblich am Schreiben von "Undokumentierten Fenstern" durch Andrew Schulman , David Maxey und Matt Pietrek beteiligt . SoftICE / W wurde von einem früheren, weniger bekannten Produkt, SoftICE for NetWare (32-Bit-geschützter Modus), abgeleitet. Einer der Hauptvorteile gegenüber den Debuggern von Microsoft besteht darin, dass das Debuggen einzelner Computer aktiviert wurde, anstatt dass ein zweiter Computer über eine serielle Schnittstelle angeschlossen werden muss.
Die Hauptentwickler von SoftICE waren Dom Basile ('Mr. SoftICE'), Tom Guinther (Küchenspüle, Symbol Engine), Gerald Ryckman (Videotreiber und Küchenspüle ), Ray Hsu ( Videotreiber für Windows 95) und Dan Babcock ( SoftICE / NT 3.1 / 3.5: Universeller Videotreiber (Symbol-Engine) mit Beiträgen verschiedener NuMega-Entwickler, darunter Frank Grossman, Jim Moskun und Matt Pietrek.
1998 wurde die Codebasis für SoftICE / 95 für die Ausführung auf der Windows NT-Plattform portiert.
Neuere Versionen des SoftICE-Patches tief in Microsoft Windows. Daher sind alte Versionen von SoftICE selten mit neuen Windows-Versionen kompatibel. Compuware bot SoftICE daher als Abonnement an, damit es auf dem neuesten Stand und mit der neuesten Microsoft Windows-Version synchronisiert werden konnte.
Es wurde früher als Teil des DriverStudio- Pakets von Compuware angeboten , wurde jedoch im April 2006 eingestellt.
Beendigung
Zum 3. April 2006 wurde die DriverStudio-Produktfamilie aufgrund "verschiedener technischer und geschäftlicher Probleme sowie allgemeiner Marktbedingungen" eingestellt. Wartungsunterstützung wurde bis zum 31. März 2007 angeboten.
Anti-SoftICE-Maßnahmen
Softwareanbieter haben eine Vielzahl von Gegenmaßnahmen ergriffen, um sich vor Personen zu schützen, die SoftICE als Tool zur Analyse von Software einsetzen.
Hier ist beispielsweise Code, den einige Anbieter verwenden, um das Vorhandensein von SoftICE zu erkennen, das auf demselben Computer ausgeführt wird, als frühe Gegenmaßnahme:
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
Seitdem haben sich immer mehr solche Maßnahmen entwickelt. Während die meisten von ihnen nur weniger erfahrene und entschlossene Hacker abschrecken können, ist SoftICE nicht länger das Werkzeug der Wahl für jemanden, der neu in der Analyse von Software ist.
Heutzutage basieren die Abwehrmechanismen des Anbieters auf anspruchsvolleren Packern / Protektoren, z. B. Themida , Armadillo oder ASProtect, die den Programmcode packen und die Einstiegspunktadressen manipulieren, sodass es schwierig ist, den ursprünglichen Einstiegspunkt ( OEP ) des Programms zu finden . Das gilt auch für das Programm Importadressentabelle (IAT). Es stehen jedoch auch Tools zum Ausblenden von SoftICE zur Verfügung, z. B. IceStealth und IceExt für Windows NT oder Icedump und IcePatch für Windows 9x.
Rezeption
BYTE zählte Soft-ICE 1989 zu den "Distinction" -Siegern der BYTE Awards und erklärte: "Wenn Sie 8086-basierte Anwendungen auf einem 80386-Computer entwickeln, ist dies ein unverzichtbares und erschwingliches Werkzeug."
Alternativen
Ein kommerzieller Debugger auf Kernel-Ebene namens Syser behauptet, dort fortzufahren, wo SoftICE aufgehört hat.
OllyDbg ist ein Shareware-Debugger, der jedoch kostenlos verwendet werden kann. Es handelt sich um einen 32-Bit-Debugger auf Assembler-Ebene von Oleh Yuschuk. Es kann jedoch nur zum Debuggen im Benutzermodus verwendet werden.
Ein SoftICE-ähnlicher Open-Source-Kernel-Debugger namens Rasta Ring 0 Debugger (RR0D) ist verfügbar. Es bietet Debugging auf niedriger Ebene für Microsoft Windows , Linux , OpenBSD , NetBSD und FreeBSD . Dieses Projekt scheint nicht aktiv gepflegt zu werden. Ab Juni 2016 erfolgte die letzte Änderung im GitHub- Quellcode-Repository im Dezember 2008.
LinICE ist ein weiterer Debugger auf Kernel-Ebene mit einem SoftICE-Look & Feel. Ab 2015 wurde es auch seit einigen Jahren nicht mehr aktualisiert.
HyperDBG ist ein Debugger auf Kernel-Ebene, der die hardwareunterstützte Virtualisierung nutzt. Ab 2011 wurde es zuletzt im Mai 2010 aktualisiert.
Ein Debugger namens BugChecker ist ein 32-Bit-Single-Host-Kernel-Debugger für Windows 2000 und XP, der als Open Source für Bildungszwecke entwickelt und verfügbar gemacht wurde. Mit BugChecker können Benutzer sowohl in Uniprozessor- als auch in Multiprozessor-Versionen von Windows 2000 und XP sowohl Benutzer- als auch Kernel-Code nachverfolgen.
Viele Hypervisoren ermöglichen das Debuggen des in der virtuellen Maschine ausgeführten Kernels, indem eine Art Debugger-Schnittstelle verfügbar gemacht wird, die den virtualisierten Prozessor direkt steuern kann. Dies ermöglicht das Debuggen, selbst wenn ein Kernel nicht über native Debugging-Funktionen verfügt.
Verweise
Externe Links
- Sammlung von SoftICE-Erweiterungen
- Pietrek, Matt (11.04.2006). "Mehr zu SoftIce von einem seiner Eltern" . Archiviert vom Original am 10.10.2017 . Abgerufen am 10.10.2017 .
- Verwenden von Visual SoftICE Release 1.3.0 für Windows NT / Windows 2000 / Windows XP (PDF) . Compuware Corporation . 2003-05-19. Doc. 11581. Archiviert (PDF) vom Original am 09.10.2017 . Abgerufen am 09.10.2017 .