web-dev-qa-db-fra.com

Comment la crashing de la pile est empêchée?

Je viens de lire Papier d'Alephone sur briser la pile et la implémenter sur ma machine (Ubuntu 12.04), il était un peu vieux, il fallait aussi prendre beaucoup d'aide sur Internet, mais j'ai apprécié.

Maintenant, je veux apprendre comment cela est empêché dans la vraie vie.

Ce serait génial si vous pouvez me suggérer des papiers ou des ressources en ligne qui démontrent comment cela est empêché.

7
Jaydeep Solanki

Il existe deux techniques primaires pour atténuer les débordements tampons à base de pile.

La première technique attaque le problème aux racines. Les débordements tampons se produisent lorsqu'un programme tente d'écrire en dehors des limites d'une structure de données. Le moyen le plus efficace d'arrêter un débordement de mémoire tampon est de STOP Cela se produisant. Utilisez un langage de programmation, que ce soit Java, Python, Ruby, qui gérera la mémoire pour vous. Si vous doit , utilisez C, assurez-vous d'effectuer des contrôles corrects avant d'écrire sur un tampon.

La deuxième technique consiste à atténuer les dommages qu'un débordement de tampon peut provoquer. Techniques comme les canaris de pile, DEP et ASLR tomber sous cette catégorie. Ils travaillent à limite Les dégâts qu'un débordement tampon peut causer en rendant plus difficile l'exécution de code arbitraire après un débordement. Ces techniques peuvent être vaincues. Pour plus d'informations sur DEP et ASLR, voir this question.

12
user10211