Categories
Tags
algorithms APIT Arc arm assembly asynchronous base64 BitHacks Blogging box c clang-format client cmake compiler concat concurrency const_fn contravariant cos covariant cpp Customization cybersecurity DataStructure db debugging Demo deserialization discrete doc DP dtruss Dynamic Example FFI flat_map format FP fsanitize Functional functions futures Fuwari GATs gccrs generics gitignore glibc GUI hacking hashmap haskell heap interop invariant iterator join justfile kernel LaTeX leak LFU linux lto MachineLearning macOS Markdown math ML mmap nc OnceLock optimization OS panic parallels perf physics pin postgresql radare2 release reverse RPIT rust sanitizer science Science serialization server shift sin SmallProjects socket std strace String StringView strip strlen surrealdb SWAR swisstable synchronous tan toml traits triangulation UnsafeRust utf16 utf8 Video wsl x86_64 xilem zig
178 words
1 minutes
260204_Impl_GUI_in_Windows_Kernel
link
윈도우에서 GUI프로그램의 작동 원리
GUI 프로그램일 경우 그래픽과 메시지 등을 담당하는 기능이 커널 드라이버인 win32k.sys에서 담당하므로 시스템 콜 테이블을 가져오는 과정에서 KeServiceDescriptorTable이 아닌 KeServiceDescriptorTableShadow 구조체를 가져온다. 이 구조체는 커널 자체(KiServiceTable)와 win32k.sys의 시스템 콜 테이블이 모두 들어가 있다. 여기서 win32k.sys의 시스템 콜 테이블은 W32pServiceTable이다. win32k.sys의 시스템 콜도 역시 win32u.dll라는 라이브러리로 사용자 모드에 노출된다. user32.dll과 gdi32.dll이 win32u.dll의 함수를 사용한다.
260204_Impl_GUI_in_Windows_Kernel
https://younghakim7.github.io/blog/posts/260204_impl_gui_in_windows_kernel/