🤖
LSTAR
LSTAR
システムコールのentry_SYSCALL_64のアドレスを取得するモジュール
#include <linux/module.h>
static inline uint64_t exec_rdmsr(uint64_t msr)
{
uint32_t low, high;
asm volatile (
"rdmsr"
: "=a"(low), "=d"(high)
: "c"(msr)
);
return ((uint64_t)high << 32) | low;
}
static int __init mymodule_init(void)
{
uint64_t res = exec_rdmsr(0xc0000082U);
printk(KERN_INFO "MSR_IA32_LSTAR: %llx\n", res);
return 0;
}
static void __exit mymodule_exit(void)
{
printk(KERN_INFO "bye module\n");
}
module_init(mymodule_init);
module_exit(mymodule_exit);
MODULE_AUTHOR("shiroyama");
MODULE_LICENSE("GPL v2");
X86_FEATURE_PTIは有効になっておらず、というかそのようなCONFIGも存在せず、毎回LSTARのアドレスは同じになる。
MSR_IA32_LSTAR: ffffffff81e00000
MSR_IA32_LSTAR: ffffffff81e00000
Discussion