It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
我知道vtables以只读方式存储在内存中,以防止修改哪个部分确切地存储vtables?
另一个问题是,根据vtables拥有的只读权限,它们在利用漏洞编写过程中是如何被修改的?

最佳答案

你从哪里知道vtables存储在只读存储器中?vtable实现是完全由编译器定义的,根本不能保证它们是只读的。我可以想象在许多实现中,它们可能存储在可写内存中,例如,如果写保护不可用。
即使vtable本身是写保护的,也没有理由不更改对象实例中的vtable指针,使其指向所选的看起来像真实vtable的内存,并利用该指针跳转到其他函数。

10-07 19:21
查看更多