修改页面 table read/write 位以修改系统调用 table
modify page table read/write bits to modify system call table
我要修改__NR_fork入口的地址是系统调用table
所以我会做这样的事情:sys_call_table_addr[__NR_fork] = newaddress;
但我想更改页面中的 read/write 位 table 以便能够对其进行修改
关于如何做到这一点的任何提示?
不确定这将如何满足您的目的,但一般来说,页面 table 的机制是:
页面 table 步行找到页面 table 条目 (pte
)。我知道的两种方法是手动的,比如在定义 here or with a walk_page_range()
call that does the walk for you with other helper walk functions defined here 的 __handle_mm_fault()
函数中是如何完成的。请注意,__handle_mm_fault()
将 pmd
转换为 pte
的最后一步留给了 handle_pte_fault()
函数。
修改页面table条目(pte
)位的函数。 pte_set_flags()
、pte_mkclean()
、pte_mkwrite()
等相关函数定义here
我要修改__NR_fork入口的地址是系统调用table
所以我会做这样的事情:sys_call_table_addr[__NR_fork] = newaddress;
但我想更改页面中的 read/write 位 table 以便能够对其进行修改 关于如何做到这一点的任何提示?
不确定这将如何满足您的目的,但一般来说,页面 table 的机制是:
页面 table 步行找到页面 table 条目 (
pte
)。我知道的两种方法是手动的,比如在定义 here or with awalk_page_range()
call that does the walk for you with other helper walk functions defined here 的__handle_mm_fault()
函数中是如何完成的。请注意,__handle_mm_fault()
将pmd
转换为pte
的最后一步留给了handle_pte_fault()
函数。修改页面table条目(
pte
)位的函数。pte_set_flags()
、pte_mkclean()
、pte_mkwrite()
等相关函数定义here