HANDLE ๊ตฌ์กฐ์ฒด์ Kernel Object
์ด ๋ด์ฉ์ ์ฐ๊ธฐ ์ ์ ๋ง์ด ๊ณ ๋ฏผ์ ํ๋ ๊ฒ์ ๋ค๋ฆ์ด ์๋ ํ๋ก์ธ์ค์ ๋ํ ์ค๋ช ๊ณผ ์ด์์ฒด์ ์ปค๋์ ๋ํ ์ ๋ฐ์ ์ธ ์ด์ผ๊ธฐ๋ฅผ ํฌ์คํ ์ ํด์ผํ ๊น, ํ์ง ์์๋ ๋ ๊น ๋ผ๋ ๊ณ ๋ฏผ์ ๋ง์ด ํ ์ฑ ์ด ๋ด์ฉ์ ๋ฐ๋ก ๋ค์ด๋ ํธ๋ก ํฌ์คํ ํ๊ฒ ๋์์ต๋๋ค.
๊ทธ๋์, ์ด ํฌ์คํ ์ ๋ณด์๊ธฐ ์ ์, ๋ฐ๋์ ์ด์์ฒด์ ์ปค๋์ ๋ํ ์ ๋ฐ์ ์ธ ์ดํด์ ํ๋ก์ธ์ค์ ๋ํ ๊ธฐ์ด์ ์ด๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์ ์์ง ํ, ์ด ํฌ์คํธ๋ฅผ ๋ณด์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
Kernel Object
์ปค๋ ์ค๋ธ์ ํธ๋ผ๋ ๊ฒ์ ๋ง ๊ทธ๋๋ก ์ปค๋ ๊ฐ์ฒด์ ๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ์ฌ์ฉํ๋ Windows์์ ์ปค๋ ์์ ์กด์ฌํ๋ฉฐ ๊ทธ์ ์ํด ๊ด๋ฆฌ๋๋ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ผ์ข ์ ๋๋ค. ์ฝ๊ฒ ํ ๋ฒ ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.
์ด์์ฒด์ ์ปค๋์๋ ์์คํ ์ ์ด์์ ์ํด, ํ์ผ, ํ๋ก์ธ์ค, ์ฐ๋ ๋๊ฐ ์กด์ฌํฉ๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํ์ผ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ์ ํ๊ณ , ์ด๋ค ํ๋ก๊ทธ๋จ์ ์ด์ฉํด ์๋น์ค๋ฅผ ์ ๊ณต๋ฐ๊ธฐ ์ํด์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋๋ฐ, ๊ทธ ์คํ๋ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์๋ฅผ ๋ค์ด, ์ด๋ค ํ์ผ(neonkid.txt)๋ผ๋ ๊ฒ์ด ์๋ค๋ฉด, ์ด ํ์ผ ์์ฒด๊ฐ ์ปค๋ ์ค๋ธ์ ํธ์ธ๊ฐ? ๊ทธ๊ฒ์ ์๋๋๋ค. ์ปค๋ ์ค๋ธ์ ํธ๋ ์ด ๋ฆฌ์์ค ์์ฒด๋ฅผ ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์๋๋ผ ์ด ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ต์ํ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ Windows์ ํ์ผ์ ๋ํ ์ ๋ณด์๋ ์ด๋ค ๊ฒ์ด ์๋์ง ํ ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
ํ์ผ ํ ๊ฐ์ ๋ํ ์ ๋ณด์๋ ์ด ํ์ผ์ด ๋๋ ํ ๋ฆฌ์ธ์ง, ์ผ๋ฐ ํ์ผ์ธ์ง์ ๋ํ ์ ๋ณด, ๊ทธ ์ธ์ ์ด๊ฒ์ด ํน์ 'Read-only' ์์ฑ, ํน์ 'Hidden' ์์ฑ์ ๊ฐ์ง๊ณ ์๋์ง ๋ฑ์ ๋ํ ์ ๋ณด๊ฐ ๋์ ์์ต๋๋ค. ์ด๋ฐ ์ ๋ณด๋ค์ด ๋ฐ๋ก ์ปค๋ ์ค๋ธ์ ํธ์ ํด๋น ํฉ๋๋ค. ์ด ์์ ์ด์ธ์ ๋ค๋ฅธ ๊ฒ๋ค๋ ์กด์ฌํฉ๋๋ค.
ํ๋ก์ธ์ค ๋ํ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ํ๋ก์ธ์ค ์์ฒด๊ฐ ์ปค๋ ์ค๋ธ์ ํธ๊ฐ ์๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ ๋ณด๋ค ์๋ฅผ ๋ค์๋ฉด, ์ ํ๋ฉด์ฒ๋ผ PID, Process Status(CPU) ๋ฑ์ ์ ๋ณด๋ค์ด ๋ฐ๋ก ์ปค๋ ์ค๋ธ์ ํธ์ ์ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด ์ปค๋ ์ค๋ธ์ ํธ๋ ์ด๋ป๊ฒ ์์ฑ๋๊ณ , ์ฌ์ฉ๋ ๊น์?
ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ, ์ด์์ฒด์ ์ปค๋์๋ ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ๊ฐ ์กด์ฌํฉ๋๋ค. (ํ๋ก์ธ์ค์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ง์์ด ํ์ํ ๋ด์ฉ์ ๋๋ค.) ์ด ์ค์ผ์ค๋ฌ๊ฐ ์ํํ ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ํด ์ฐ์ ์์๊ฐ ์ด๋ค์ง, ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ๋์ง ๋ฑ์ ์ ๋ณด๋ฅผ ํด๋น ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ๊ทธ ์ปค๋ ์ค๋ธ์ ํธ๋ฅผ ์ปค๋์ด ์์ฑํด์ ๊ด๋ฆฌํฉ๋๋ค.
๊ทธ๋ฆผ์ด ์กฐ๊ธ ํ์ ํ ์ , ์ดํด๋ฅผ ๋ถํ๋๋ฆฝ๋๋ค... ใ ๋ณด๋ค์ํผ ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋ฉด, ์ปค๋์์๋ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ ํ, ํด๋น ํ๋ก์ธ์ค์ ๋ํ ์ปค๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ์ ๊ทธ๋ฆผ์ ์ ๊ฐ cmd.exe๋ฅผ ์คํ์์ผ์ ํด๋น ์ปค๋งจ๋์ notepad.exe๋ฅผ ์คํ์ํจ ๊ฒฐ๊ณผ ๊ทธ๋ฆผ์ ๋๋ค.
HANDLE ๊ตฌ์กฐ์ฒด
์๋์ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค๋ณด๋ฉด, HANDLE ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง์ด ์ ํ์๊ฒ ๋ ๊ฒ์ ๋๋ค. HANDLE ๊ตฌ์กฐ์ฒด๋ ์ปค๋ ์ค๋ธ์ ํธ๋ฅผ ๊ฑด๋๋ฆฌ๊ธฐ ์ํ ๊ตฌ์กฐ์ฒด ์ค ํ๋์ ๋๋ค.
์ฌ๋ฌ๋ถ๋ค์ด ์ฝ๋ฉ์ ํ๋ค๋ณด๋ฉด, ํ์ฌ ์คํํ๊ณ ์๋ ํ๋ก์ธ์ค ํน์, ์คํ ๋ฆฌ์ง์ ์๋ ํ๋ก๊ทธ๋จ์ ์คํํด ํ๋ก์ธ์ค๋ฅผ ์์ฑํด์ผํ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค. ํ์ง๋ง ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ํ์ผ์ ๊ฑด๋๋ฆฌ๋ ค๋ฉด, ๋จผ์ ์ปค๋ ์ค๋ธ์ ํธ์ ์ ๊ทผํด์ผํ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด, ์ด๋ค ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ ์, ํ๋ก๊ทธ๋จ์์๋ ํด๋นํ๋ ๋ฆฌ์์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ผํ๊ธฐ ๋๋ฌธ์ด์ง์.
ํ์ง๋ง ์์์๋ ๋งํ๋ค์ํผ ์ปค๋ ์ค๋ธ์ ํธ๋ ์ปค๋์ด ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋น์ฐํ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ๊ฑด๋๋ฆด ์๊ฐ ์์ต๋๋ค. (์ด์์ฒด์ ์ ๊ฐ๋ก ์ ์์๋ ๋ถ์ด๋ผ๋ฉด ์ดํด๊ฐ ๋์๋ ๋ด์ฉ์ผ ๊ฒ์ ๋๋ค.)
๊ทธ๋์ ๋ํ๋ ๊ฒ์ด ๋ฐ๋ก HANDLE ๊ตฌ์กฐ์ฒด์ ๋๋ค.
์ฌ๋ฌ๋ถ๋ค์ด ํ๋ก๊ทธ๋จ์ ์ด์ฉํด์ ๋ด๊ฐ ์ํ๋ ์ด๋ค ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ๋ค. ์๋๋ฉด ํ๋ก๊ทธ๋จ์ ์ด์ฉํด์ ์ด๋ค ํ์ผ์ ๋ํ ๋ด์ฉ์ด๋ ๊ถํ์ ์์ ํ๊ณ ์ถ๋ค. ์ด๋ด ๊ฒฝ์ฐ, ์ปค๋ ์ค๋ธ์ ํธ์ ์ง์ ์ ์ธ ์ ๊ทผ์ ์ ๋์ง๋ง, HANDLE ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ ์ธ ์ ๊ทผ์ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ์ค์ HANDLE๊ณผ ์ปค๋ ์ค๋ธ์ ํธ๋ ๊ฐ์ ๋์์ ๋๋ค. ๋ค๋ง, ํธ๋ค์ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋ ๊ป๋ฐ๊ธฐ์ด๊ณ , ๊ทธ ๋ด์ฉ๋ฌผ์ ๋ฐ๋ก ์ปค๋ ์ค๋ธ์ ํธ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
Coding...
์ ์ด์ ๊ฐ๋ ์ ์์งํ์ จ๋ค๋ฉด, ์ฝ๋ฉ ๋ถ๋ถ์ผ๋ก ๋์ด์ค์๋ฉด ๋๋๋ฐ, ์ด ๋ถ๋ถ์ ์ฐจ๊ธฐ ํฌ์คํธ์์ ๋ฐ๋ก ํฌ์คํ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฝ๋ฉ์ ํ์๊ธฐ ์ ์, ๋ฐ๋์ ์ ๋ ๊ฐ์ ๊ฐ๋ ์ ์์งํ์ ํ ์งํํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
'Programming > WinAPI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Windows API๋ก ์์ํด๋ณด๋ ์์ผ ํ๋ก๊ทธ๋๋ฐ (0) | 2017.04.10 |
---|---|
HANDLE ๊ตฌ์กฐ์ฒด์ Kernel Object๋ฅผ ์ด์ฉํ ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ (0) | 2016.08.31 |
SBCS, MBCS์ WBCS / ์ ๋์ฝ๋ ํ๋ก๊ทธ๋๋ฐ์ด ์ค์ํ ์ด์ (3) | 2016.07.19 |
Win32 API์ ์๋ฃํ (0) | 2016.06.14 |
Windows API ์์ ๋ง๋จ (0) | 2016.06.12 |