Control Register

msh1307·2023년 1월 29일
0

Kernel

목록 보기
7/9

Control Register

컨트롤 레지스터는 일반적인 동작을 변경하거나 제어하는 레지스터다.
인터럽트 제어나, 페이징 제어 등을 예로 들 수 있다.
64비트에선 CR0 ~ CR4CR8이 추가적으로 존재한다고 한다.

CR4


CR0 ~ CR4 중에서도 CR4레지스터는 프로세스에서 지원하는 각종 확장 기능들을 제어한다.
SMEP, SMAP도 제어한다.
이 비트를 건드려서, SMEPSMAP를 우회할 수 있다.

일부러 커널 패닉을 일으키면 CR4 레지스터의 값을 확인할 수 있다.

/ $ ./cr4_check
[    5.054479] arr : 0
[    5.054843] general protection fault: 0000 [#1] SMP NOPTI
[    5.055286] CPU: 0 PID: 69 Comm: cr4_check Tainted: G           O      5.8.5 #2
[    5.055600] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
[    5.055909] RIP: 0010:0x4141414141414141
[    5.056048] Code: Bad RIP value.
[    5.056180] RSP: 0018:ffffc9000019fed8 EFLAGS: 00000246
[    5.056255] RAX: 0000000000000000 RBX: 4141414141414141 RCX: 0000000020727261
[    5.056390] RDX: 4141414141414141 RSI: ffffffff82b12ba0 RDI: ffffffff82b12fa0
[    5.056464] RBP: 4141414141414141 R08: 0000000030203a20 R09: 0000000000028900
[    5.056586] R10: 4141414141414141 R11: 0000000000000045 R12: 4141414141414141
[    5.056701] R13: ffffc9000019ff10 R14: 00007ffda3974980 R15: 0000000000000000
[    5.056898] FS:  000000000188f880(0000) GS:ffff88801f000000(0000) knlGS:0000000000000000
[    5.057064] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    5.057206] CR2: 000000000045a780 CR3: 000000001da36000 CR4: 00000000001006f0
[    5.057379] Call Trace:
[    5.057884]  ? ksys_write+0x9c/0xd0
[    5.057944]  ? do_syscall_64+0x3e/0x70
[    5.058028]  ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
[    5.058196] Modules linked in: test(O)
[    5.058730] ---[ end trace 75bee9a911ca4f5a ]---
[    5.058824] RIP: 0010:0x4141414141414141
[    5.059045] Code: Bad RIP value.
[    5.059226] RSP: 0018:ffffc9000019fed8 EFLAGS: 00000246
[    5.059304] RAX: 0000000000000000 RBX: 4141414141414141 RCX: 0000000020727261
[    5.059392] RDX: 4141414141414141 RSI: ffffffff82b12ba0 RDI: ffffffff82b12fa0
[    5.059495] RBP: 4141414141414141 R08: 0000000030203a20 R09: 0000000000028900
[    5.059573] R10: 4141414141414141 R11: 0000000000000045 R12: 4141414141414141
[    5.059821] R13: ffffc9000019ff10 R14: 00007ffda3974980 R15: 0000000000000000
[    5.060080] FS:  000000000188f880(0000) GS:ffff88801f000000(0000) knlGS:0000000000000000
[    5.060342] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    5.060408] CR2: 000000000045a780 CR3: 000000001da36000 CR4: 00000000001006f0
[    5.060682] Kernel panic - not syncing: Fatal exception
[    5.061057] Kernel Offset: disabled
[    5.061220] ---[ end Kernel panic - not syncing: Fatal exception ]---
profile
https://msh1307.kr

0개의 댓글