¿Alguien ha comparado CPI y PointGuard, que son dos herramientas basadas en compiladores para lidiar con la corrupción de memoria?
Integridad del indicador de código (CPI): enlace
PointGuard: enlace
Aunque los dos utilizan técnicas muy diferentes (CPI mantiene los metadatos para cada puntero de control y PointGuard encripta los punteros cuando se almacenan en la memoria), ambos tienen que instrumentar el código del programa para cambiar la forma en que se usan los punteros y ambos proteger los valores de punteros de ser manipulados.
Por lo que puedo ver, comparten el mismo problema de compatibilidad: si una biblioteca no se compila con su compilador personalizado, el código de la biblioteca que utiliza punteros protegidos activará el bloqueo (el modo de depuración de CPI puede no tener ese problema cuando se leen los punteros protegidos, pero la escritura sigue teniendo el mismo problema de compatibilidad y el modo de depuración no es seguro para filtrar información).
El documento del IPC dice que "PointGuard [13] ... enfrenta problemas de compatibilidad". Esto me confundió, ya que creo que CPI no tiene ninguna ventaja en términos de compatibilidad.
Si ha leído los dos documentos, ¿podría compartir algunos pensamientos y comparar su compatibilidad?