SoftICE es un depurador en modo kernel para DOS y Windows hasta Windows XP. Fundamentalmente, está diseñado para ejecutarse debajo de Windows de modo que el sistema operativo no se dé cuenta de su presencia. A diferencia de un depurador de aplicaciones, SoftICE es capaz de suspender todas las operaciones en Windows cuando se le indique. Para la depuración de controladores, esto es fundamental debido a cómo se accede al hardware y al kernel del sistema operativo. Debido a sus capacidades de bajo nivel, SoftICE también es popular como herramienta de descifrado de software .
Autor (es) original (es) | NuMega |
---|---|
Desarrollador (es) | Compuware |
Versión inicial | 1987 | (DOS)
Lanzamiento final | v4.05 / 2000 [1] |
Sistema operativo | Microsoft Windows |
Tipo | Depurador |
Licencia | Propiedad |
Microsoft ofrece dos depuradores en modo kernel , WinDbg y KD , sin cargo. Sin embargo, las capacidades completas de WinDbg y KD están disponibles solo cuando se utilizan dos computadoras interconectadas. Por lo tanto, SoftICE es una herramienta excepcionalmente útil para el desarrollo relacionado con controladores difíciles. La última versión publicada fue para Windows XP.
Existen versiones anteriores para DOS y sistemas operativos compatibles. SoftICE fue originalmente producido por una compañía llamada NuMega , y posteriormente fue adquirida por Compuware en 1997, que a su vez vendió la propiedad a Micro Focus en 2009. Actualmente, Micro Focus posee el código fuente y las patentes, pero no mantiene activamente SoftICE.
Nombrar
"Suave" se refiere a software, y la parte "ICE" del nombre es una alusión al emulador en circuito .
Historia
El SoftICE original para DOS fue escrito en 1987 por los fundadores de NuMega, Frank Grossman y Jim Moskun . El programa, escrito en lenguaje ensamblador 80386 , desempeñaba el papel de un sistema operativo y ejecutaba software en modo 8086 virtual . Se vendió por 386 dólares.
SoftICE / W (para Windows) se desarrolló en la década de 1990 y fue fundamental en la escritura de "Windows sin documentar", por Andrew Schulman , David Maxey y Matt Pietrek . SoftICE / W se derivó de un producto anterior y menos conocido, SoftICE para NetWare (modo protegido de 32 bits). Una de las ventajas clave que tenía sobre los depuradores de Microsoft es que permitía la depuración de una sola máquina, en lugar de requerir la conexión de una segunda máquina a través de un puerto serie.
Los principales desarrolladores de SoftICE fueron Dom Basile ('Mr.SoftICE'), Tom Guinther (Kitchen Sink, Symbol Engine), Gerald Ryckman (Controladores de video y Kitchen Sink ), Ray Hsu (Controladores de video para Windows 95) y Dan Babcock ( SoftICE / NT 3.1 / 3.5: controlador de video universal, motor de símbolos), con contribuciones de una variedad de desarrolladores de NuMega, incluidos Frank Grossman, Jim Moskun y Matt Pietrek.
En 1998, el código base de SoftICE / 95 fue adaptado para ejecutarse en la plataforma Windows NT.
Las versiones más recientes del parche SoftICE se introducen profundamente en Microsoft Windows. Como tal, las versiones antiguas de SoftICE rara vez son compatibles con las nuevas versiones de Windows. Por lo tanto, Compuware ofreció SoftICE como suscripción para que pudiera mantenerse actualizado y sincronizado con la última versión de Microsoft Windows.
Solía ofrecerse como parte del paquete DriverStudio de Compuware, pero se suspendió en abril de 2006.
Terminación
A partir del 3 de abril de 2006, la familia de productos DriverStudio se suspendió debido a "una variedad de problemas técnicos y comerciales, así como a las condiciones generales del mercado". Se ofreció soporte de mantenimiento hasta el 31 de marzo de 2007.
Medidas anti-SoftICE
Los proveedores de software han implementado una amplia gama de contramedidas para protegerse de las personas que emplean SoftICE como herramienta para analizar software.
Por ejemplo, aquí está el código que algunos proveedores usaron para detectar la presencia de SoftICE ejecutándose en la misma máquina como una contramedida temprana:
mov eax , dword ptr [ pIDT + 2 ] ; eax -> IDT agregar eax , 8 ; eax -> int 1 vector mov ebx , [ eax ] ; ebx == int 1 vector agregar eax , 16 ; eax -> int 3 vector mov eax , [ eax ] ; eax == int 3 vector y eax , 0 FFFFh ; quitar el selector y ebx , 0 FFFFh ; parte de ella sub eax , ebx ; encontrar el desplazamiento cmp eax , 10 h jne HackedVector ; no es igual, entonces las posibilidades son ; SoftICE había manipulado estos vectores
Desde entonces, se han desarrollado más y mejores medidas de este tipo. Si bien la mayoría de ellos solo pueden disuadir a los piratas informáticos menos experimentados y decididos, SoftICE ya no es una herramienta de elección para alguien nuevo en el análisis de software.
Las defensas de los proveedores actuales se basan en empaquetadores / protectores más sofisticados, por ejemplo, Themida , Armadillo o ASProtect, que empaquetan el código del programa y manipulan las direcciones de los puntos de entrada, por lo que es difícil encontrar el punto de entrada original ( OEP ) del programa. Eso también es cierto para la tabla de direcciones de importación (IAT) del programa. Sin embargo, también hay disponibles herramientas para ocultar SoftICE, como IceStealth y IceExt para Windows NT, o Icedump e IcePatch para Windows 9x. [2]
Recepción
BYTE en 1989 incluyó a Soft-ICE entre los ganadores "Distinción" de los premios BYTE, indicando que "si está desarrollando aplicaciones basadas en 8086 en una máquina 80386, esta es una herramienta esencial y asequible". [3]
Alternativas
Un depurador comercial de nivel de kernel llamado Syser afirma que continuará donde lo dejó SoftICE.
Un depurador de shareware, pero de uso gratuito, OllyDbg es un depurador de nivel de ensamblador de 32 bits de Oleh Yuschuk. Sin embargo, solo se puede utilizar para la depuración en modo de usuario.
Está disponible un depurador de kernel de código abierto similar a SoftICE llamado Rasta Ring 0 Debugger (RR0D). [4] [5] Proporciona depuración de bajo nivel para Microsoft Windows , Linux , OpenBSD , NetBSD y FreeBSD . Este proyecto no parece que se mantenga de forma activa. A junio de 2016[actualizar], el último cambio en su repositorio de código fuente de GitHub ocurrió en diciembre de 2008. [6]
LinICE es otro depurador de nivel de kernel con una apariencia y sensación de SoftICE. A partir de 2015[actualizar], tampoco se ha actualizado durante varios años. [7]
HyperDBG es un depurador a nivel de kernel que aprovecha la virtualización asistida por hardware. A partir de 2011[actualizar], se actualizó por última vez en mayo de 2010. [8]
Un depurador llamado BugChecker es un depurador de kernel de un solo host de 32 bits para Windows 2000 y XP, desarrollado y disponible como código abierto con fines educativos. BugChecker permite a los usuarios rastrear tanto el código de usuario como el del kernel, tanto en versiones monoprocesador como multiprocesador de Windows 2000 y XP. [9]
Muchos hipervisores permiten depurar el kernel que se ejecuta en la máquina virtual mediante la exposición de algún tipo de interfaz de depuración que puede controlar el procesador virtualizado directamente. Esto permite la depuración incluso si un kernel no tiene facilidades de depuración nativas.
Referencias
- ^ Notas de la versión de NuMega SoftICE 4.05
- ^ "Categoría: Extensiones SoftICE - Biblioteca de herramientas colaborativas RCE" . Woodmann.com . Consultado el 24 de abril de 2014 .
- ^ "Los premios BYTE" . BYTE . Enero de 1989. p. 327.
- ^ "RR0D / Presentación" . Wiki.droids-corp.org . Consultado el 24 de abril de 2014 .
- ^ "Depurador Rasta Ring 0 (RR0D) - Biblioteca colaborativa de herramientas RCE" . Woodmann.com. 2007-10-18 . Consultado el 24 de abril de 2014 .
- ^ José. "ice799 / rr0d" . Github.com . Consultado el 5 de junio de 2016 .
- ^ "Depurador LinICE" . sites.google.com . Consultado el 31 de julio de 2015 .
- ^ "hyperdbg: un depurador de kernel que aprovecha la virtualización asistida por hardware" . Code.google.com . Consultado el 24 de abril de 2014 .
- ^ "BugChecker" . BugChecker . Consultado el 24 de abril de 2014 .
enlaces externos
- Colección de extensión SoftICE
- Pietrek, Matt ( 11 de abril de 2006 ). "Más sobre SoftIce, de uno de sus padres" . Archivado desde el original el 10 de octubre de 2017 . Consultado el 10 de octubre de 2017 .
- Usando Visual SoftICE versión 1.3.0 para Windows NT / Windows 2000 / Windows XP (PDF) . Compuware Corporation . 2003-05-19. Doc. 11581. Archivado (PDF) desde el original el 9 de octubre de 2017 . Consultado el 9 de octubre de 2017 .