Articulo de referencia

SoftICE

{{Cite web|url=https://www.angelfire.com/bug/ass_1/Readme.htm|title=NuMega SoftICE 4.05 Release Notes|access-date=2012-06-04|archive-date=2018-01-01|archive-url=https://web.arch...

SoftICE es un depurador en modo kernel para DOS y Windows hasta Windows XP . Está diseñado para ejecutarse en segundo plano en Windows, de modo que el sistema operativo no detecte su presencia. A diferencia de un depurador de aplicaciones, SoftICE puede suspender todas las operaciones en Windows cuando se le indica. Debido a sus capacidades de bajo nivel, SoftICE también es popular como herramienta para descifrar software .

Microsoft ofrece gratuitamente dos depuradores en modo kernel: WinDbg y KD. Sin embargo, todas las funcionalidades de WinDbg y KD solo están disponibles cuando se utilizan dos ordenadores interconectados. Por lo tanto, SoftICE es una herramienta excepcionalmente útil para el desarrollo de controladores complejos. La última versión publicada fue para Windows XP.

Existen versiones anteriores para DOS y sistemas operativos compatibles. SoftICE fue desarrollado originalmente por la empresa NuMega y posteriormente adquirido 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 se encarga del mantenimiento activo de SoftICE.

Nomenclatura

"Soft" se refiere al software, y "ICE" es una alusión a un 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 , funcionaba como un sistema operativo y ejecutaba software en modo virtual 8086. Su precio de venta era de 386 dólares.

SoftICE/W (para Windows) se desarrolló en la década de 1990 y fue fundamental para la creación de "Undocumented Windows", de Andrew Schulman, David Maxey y Matt Pietrek . SoftICE/W derivaba de un producto anterior menos conocido, SoftICE para NetWare ( modo protegido de 32 bits ). Una de sus principales ventajas sobre los depuradores de Microsoft era que permitía la depuración en una sola máquina, sin necesidad de conectar una segunda máquina mediante un puerto serie.

Los principales desarrolladores de SoftICE fueron Dom Basile ('Mr. SoftICE'), Tom Guinther (Kitchen Sink, Symbol Engine), Gerald Ryckman (controladores de vídeo y Kitchen Sink ), Ray Hsu (controladores de vídeo para Windows 95 ) y Dan Babcock ( SoftICE/NT 3.1/3.5: controlador de vídeo universal, motor de símbolos), con contribuciones de varios desarrolladores de NuMega, entre ellos Frank Grossman, Jim Moskun y Matt Pietrek.

En 1998, el código fuente de SoftICE/95 se adaptó para ejecutarse en la plataforma Windows NT .

Las versiones más recientes de SoftICE integran profundamente las funcionalidades de Microsoft Windows. Por lo tanto, las versiones antiguas de SoftICE rara vez son compatibles con las versiones más recientes de Windows. Compuware, por consiguiente, ofrecía SoftICE mediante suscripción para que pudiera mantenerse actualizado y sincronizado con la última versión de Microsoft Windows.

SoftICE se ofrecía anteriormente como parte del paquete DriverStudio de Compuware, pero se dejó de comercializar en abril de 2006.

Terminación

A partir del 3 de abril de 2006, la familia de productos DriverStudio se descontinuó debido a "diversos problemas técnicos y comerciales, así como a las condiciones generales del mercado". Se ofreció soporte técnico 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 utilizan SoftICE como herramienta para analizar software.

Por ejemplo, aquí hay un código que algunos proveedores utilizaron para detectar la presencia de SoftICE ejecutándose en la misma máquina como una medida preventiva temprana:

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 , 0 FFFFh ; elimina el selector and ebx , 0 FFFFh ; parte de él sub eax , ebx ; encuentra el desplazamiento cmp eax , 10 h jne HackedVector ; no son iguales, entonces es probable que ; SoftICE haya manipulado estos vectores

Desde entonces, se han desarrollado medidas más eficaces y sofisticadas. Si bien la mayoría de ellas solo pueden disuadir a los hackers menos experimentados y decididos, SoftICE ya no es la herramienta preferida para quienes se inician en el análisis de software.

Los métodos modernos de anti-análisis de software se basan en empaquetadores/protectores más sofisticados, como Themida, Armadillo o ASProtect, que empaquetan el código del programa y manipulan las direcciones de los puntos de entrada, dificultando así la localización del punto de entrada original ( OEP ) del programa. Esto también se aplica a la tabla de direcciones de importación (IAT) del programa . Sin embargo, también existen herramientas para ocultar SoftICE, como IceStealth e IceExt para Windows NT, o Icedump e IcePatch para Windows 9x . [ 2 ]

Recepción

En 1989, BYTE incluyó a Soft-ICE entre los ganadores de la "Distinción" de los Premios BYTE, afirmando 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 a nivel de núcleo llamado Syser afirma continuar donde SoftICE lo dejó.

OllyDbg es un depurador shareware de uso gratuito, desarrollado por Oleh Yuschuk y escrito en lenguaje ensamblador de 32 bits . Sin embargo, solo puede utilizarse para la depuración en modo usuario.

Existe 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 recibir mantenimiento activo. A fecha de junio de 2016 , el último cambio en su repositorio de código fuente de GitHub ocurrió en diciembre de 2008. [ 6 ]

BugChecker es un depurador de kernel de 32 bits para un solo host en 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, en versiones de Windows 2000 y XP tanto para procesadores individuales como multiprocesadores . [ 7 ]

En 2023, Vito Plantamura lanzó BugChecker, un sucesor moderno de SoftICE (sin relación con el mencionado anteriormente). A diferencia de otros depuradores de kernel local, es compatible con Windows XP a Windows 11, tanto de 32 como de 64 bits. Para lograrlo, el depurador simula que la máquina está siendo depurada por un segundo sistema interceptando la comunicación del cable serie y, a continuación, dibuja su visualización directamente en el framebuffer . Este método mejora significativamente la estabilidad y la compatibilidad en comparación con enfoques anteriores, incluido el propio SoftICE. [ 8 ]

Muchos hipervisores permiten depurar el núcleo que se ejecuta en la máquina virtual mediante una interfaz de depuración que permite controlar directamente el procesador virtualizado . Esto posibilita la depuración incluso si el núcleo no dispone de herramientas de depuración nativas.

Referencias

  1. "Notas de la versión NuMega SoftICE 4.05" . Archivado del original el 1 de enero de 2018. Consultado el 4 de junio de 2012 .
  2. "Categoría: Extensiones SoftICE - Biblioteca de herramientas RCE colaborativas" . Woodmann.com. Archivado del original el 31/07/2014 . Consultado el 24/04/2014 .
  3. "Los premios BYTE" . BYTE . Enero de 1989. pág. 327. 
  4. "RR0D/Presentación" . Wiki.droids-corp.org. Archivado del original el 24/04/2014 . Consultado el 24/04/2014 .
  5. "Rasta Ring 0 Debugger (RR0D) - Biblioteca de herramientas RCE colaborativa" . Woodmann.com. 18 de octubre de 2007. Archivado del original el 4 de marzo de 2016. Consultado el 24 de abril de 2014 .
  6. joe. "ice799/rr0d" . Github.com. Archivado del original el 22/12/2018 . Consultado el 05/06/2016 .
  7. "BugChecker" . BugChecker. Archivado del original el 29/10/2011 . Consultado el 24/04/2014 .
  8. "BugChecker" . Github.com . Consultado el 28 de abril de 2024 .
  • Colección de extensiones SoftICE
  • Pietrek, Matt (11 de abril de 2006). "Más sobre SoftIce, de uno de sus padres" . Archivado del original el 10 de octubre de 2017. Recuperado el 10 de octubre de 2017 .
  • Uso de Visual SoftICE versión 1.3.0 para Windows NT / Windows 2000 / Windows XP (PDF) . Compuware Corporation . 19 de mayo de 2003. Doc. 11581. Archivado (PDF) del original el 9 de octubre de 2017. Consultado el 9 de octubre de 2017 .
  • Documentación oficial de SoftICE de NuMega