用别名段来修改代码段

用别名段来修改代码段

Content #

在保护模式下,代码段是不可写入的。所谓不可写入,并非是说改变了内存的物理性质,使得内存写不进去,而是说,通过该段的描述符来访问这个区域时,处理器不允许向里面写入数据或者更改数据。但是,很多时候,又需要对代码段做一些修改。比如在调试程序时,需要加入断点指令int3。不管怎么样,如果需要访问代码段内的数据,只能重新为该段安装一个新的描述符,并将其定义为可读可写的数据段。这样,当需要修改代码段内的数据时,可以通过这个新的描述符来进行。

像这样,当两个以上的描述符都描述和指向同一个段时,把另外的描述符称为别名(alias)。注意,别名技术并非仅仅用于读写代码段,如果两个程序想共享同一个内存区域,可以分别为每个程序都创建一个描述符,而且它们都指向同一个内存段,这也是别名应用的例子。

From #