0xdead000000000000 是什么意思?
what is the meaning of 0xdead000000000000?
这个值出现在 poison.h (linux source\include\linux\poison.h):
/*
* Architectures might want to move the poison pointer offset
* into some well-recognized area such as 0xdead000000000000,
* that is also not mappable by user-space exploits:
*/
我只是好奇值的特殊性0xdead000000000000
?
很确定这只是死牛肉的变种;即它只是一个容易识别的信号值(参见 http://en.wikipedia.org/wiki/Hexspeak for deadbeef)
指针中毒的想法是确保中毒列表指针在不导致崩溃的情况下无法使用。假设您取消了一个结构与其所在列表的链接。然后您想要使指针值无效以确保它不会再次用于遍历列表。如果代码中某处存在错误——悬垂指针引用——您需要确保任何试图通过这个现在未链接的节点跟随列表的代码立即崩溃(而不是稍后在一些可能不相关的代码区域)。
当然,您可以简单地通过在其中放置一个空值或任何其他无效地址来使指针中毒。使用 0xdead000000000000 作为基值只会更容易地区分明显中毒的值与初始化为零或被零覆盖的值。并且它可以与偏移量 (LIST_POISON{1,2}) 一起使用,以创建多个不同的毒药值,这些值都指向虚拟地址 space 的不可用区域,并且一眼就能识别为无效。
这个值出现在 poison.h (linux source\include\linux\poison.h):
/*
* Architectures might want to move the poison pointer offset
* into some well-recognized area such as 0xdead000000000000,
* that is also not mappable by user-space exploits:
*/
我只是好奇值的特殊性0xdead000000000000
?
很确定这只是死牛肉的变种;即它只是一个容易识别的信号值(参见 http://en.wikipedia.org/wiki/Hexspeak for deadbeef)
指针中毒的想法是确保中毒列表指针在不导致崩溃的情况下无法使用。假设您取消了一个结构与其所在列表的链接。然后您想要使指针值无效以确保它不会再次用于遍历列表。如果代码中某处存在错误——悬垂指针引用——您需要确保任何试图通过这个现在未链接的节点跟随列表的代码立即崩溃(而不是稍后在一些可能不相关的代码区域)。
当然,您可以简单地通过在其中放置一个空值或任何其他无效地址来使指针中毒。使用 0xdead000000000000 作为基值只会更容易地区分明显中毒的值与初始化为零或被零覆盖的值。并且它可以与偏移量 (LIST_POISON{1,2}) 一起使用,以创建多个不同的毒药值,这些值都指向虚拟地址 space 的不可用区域,并且一眼就能识别为无效。