Qualcuno ha paragonato CPI e PointGuard, che sono due strumenti basati sul compilatore per gestire il danneggiamento della memoria?
Code Pointer Integrity (CPI): link
PointGuard: link
Sebbene i due utilizzino tecniche molto diverse (CPI mantiene i metadati per ogni puntatore realizzato dal controllo e PointGuard crittografa i puntatori quando sono memorizzati in memoria), entrambi devono strumentare il codice del programma per cambiare il modo in cui vengono usati i puntatori e proteggere entrambi i valori di puntatori da manipolare.
Da quello che posso vedere, condividono lo stesso problema di compatibilità: se una libreria non viene compilata utilizzando il compilatore personalizzato, il codice nella libreria che utilizza i puntatori protetti attiverà il crash (la modalità di debug del CPI potrebbe non avere quel problema quando il i puntatori protetti vengono letti, ma la scrittura ha ancora lo stesso problema di compatibilità e la modalità di debug non è sicura per perdite di informazioni).
Il documento CPI dice che "PointGuard [13] ... ha problemi di compatibilità". Questo mi ha confuso perché penso che l'IPC non abbia alcun vantaggio in termini di compatibilità.
Se hai letto i due articoli, potresti condividere alcuni pensieri e confrontare la loro compatibilità?