Es imposible detectar modificaciones del kernel desde dentro del sistema. Cualquiera que sea el detector de rootkits que utilices, el rootkit puede programarse para mentirle. Si alguien controla su kernel, entonces ellos controlan su sistema, no usted, el final de la historia. GMER también sufre de ese defecto, es intrínseco en el principio operativo: solo encuentra rootkits que no son buenos para ocultarse.
Es posible detectar modificaciones del kernel desde el exterior. Una tecnología común para ese propósito es un TPM , que es una pieza de hardware. Es un poco más complicado que "revisar la tabla de llamadas del sistema para ver si hay modificaciones" porque la tabla de llamadas del sistema es solo una pequeña parte del kernel, una modificación en cualquier otro lugar puede tener consecuencias de alcance similar. TPM funciona tomando una instantánea del sistema de vez en cuando y comparando estas instantáneas con una instantánea de referencia. El TPM solo almacena hashes, no toda la imagen de la memoria, por lo que las instantáneas deben coincidir bit por bit. La carga de módulos cambia el kernel, por lo que necesita tener un conjunto fijo de módulos así como una versión del kernel fija.
Detectar una modificación del kernel es útil solo si hay algún lugar para reportarlo. El TPM no puede decirle al usuario, porque no tiene interfaz de usuario. La forma de aprovechar un TPM es cuando usa su computadora para autenticarse en un servicio remoto. El TPM envía una medición de su PC, y el servicio remoto compara eso con un valor de referencia y decide si su PC está en buen estado o no. Un estado desconocido puede ser una actualización de la versión o un compromiso, el servicio remoto no tiene forma de saberlo, por lo que usar un TPM requiere más infraestructura para administrar las actualizaciones.
En lugar de un TPM de hardware, puede implementar una funcionalidad similar en un hipervisor. Esto no requiere un hardware especial, pero, por supuesto, implica que su sistema se ejecuta en una máquina virtual.