Linux 에서 /proc/sys/kernel/kptr_restrict 는 non-root 유저가 kallsyms 등을 통해서 커널영역 포인터값을 보지 못하게 하는 설정이다. 이 설정이 정확하게 구현되는 방식은 잘 모르겠지만 일단 이 설정을 활용하는 방법은 다음과 같다.
간단히 다음과 같은 샘플 코드를 모로 만들고, non-root process 로 실행시켜보면 결과는 아래와 같다.
int* z = &[some kernel object];
printk("%p, %pK\n", z, z);
# kptr_restrict 0 일때
[177917.336534] f99fd17c, f99fd17c
# kptr_restrict 1 일때
[177943.427247] f99fd17c, 00000000
즉 printk 포맷스트링에서 "K" 디렉티브를 뒤에 붙여서 활용한다.
'Programming' 카테고리의 다른 글
FS register in x86 Windows (0) | 2015.06.18 |
---|---|
ssh reverse tunneling for reverse RDP connection (0) | 2015.02.23 |
Difference between context switch and mode switch in Linux (2) | 2014.12.19 |
How Linux kernel implements raw_spin_lock (0) | 2014.12.10 |
DWARF Byte code in Linux exception handling (4) | 2014.12.08 |