ํํน (Hooking)์ด๋
ํํน์ด๋ ์ด์ ์ฒด์ ๋ ์์ฉ ์ํํธ์จ์ด ๋ฑ์ ๊ฐ์ข ์ปดํจํฐ ํ๋ก๊ทธ๋จ์์ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์ ๊ฐ์ ๋ฐ์ํ๋ ํจ์ ํธ์ถ, ๋ฉ์์ง, ์ด๋ฒคํธ ๋ฑ์ ์ค๊ฐ์์ ๋ฐ๊พธ๊ฑฐ๋ ๊ฐ๋ก์ฑ๋ ๋ช ๋ น, ๋ฐฉ๋ฒ, ๊ธฐ์ ์ด๋ ํ์๋ฅผ ๋งํ๋ค.
์ด ๋, ์ด๋ฌํ ๊ฐ์ญ๋ ํจ์ ํธ์ถ, ์ด๋ฒคํธ ๋๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ํ (์์ด: hook)์ด๋ผ๊ณ ํ๋ค.
์ฆ, ํํน์ (๋์ฏ๋์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋๋ ๊ฐ๊ณ ๋ฆฌ์ฒ๋ผ) ํน์ ํจ์ ์ฝ๋๋ฅผ ๊ฐ๋ก์ฑ์ ์ํ๋ ํ์(์ฒ๋ฆฌ)๋ฅผ ํ ํ์ ์๋์ ์ฝ๋๋ก ๋๋ ค์ฃผ๋ ๊ฒ์ผ๋ก ๋ค์ํ ๋ณ์กฐ๊ฐ ๊ฐ๋ฅํ ๊ธฐ์ ์ด๊ธฐ์ ํฌ๋์ปค๋ค์ด ์ค๋ ์ ๋ถํฐ ์์ฃผ ์ฌ์ฉํด์๋ ๊ธฐ๋ฒ์ ๋๋ค.
๐ ํน์ ํ API๋ฅผ ํํนํ์ฌ ํด๋น API์ ๋ฆฌํด๊ฐ์ ์กฐ์ํ๋ ๋ฑ์ ๋์์ ์ํ)
๋์ ๋ฐฉ์
์ผ๋ฐ์ ์ผ๋ก ํ (Hook)์ ์ํํธ์จ์ด๊ฐ ์ด๋ฏธ ์คํ์ค์ผ ๋ ์ฝ์ ๋์ง๋ง, ํํน์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ๋ ์ ์ ์ฐ์ผ ์ ์๋ ์ ๋ต์ ๋๋ค.
๋ฌผ๋ฆฌ์ ์์
์์ฉ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ ์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง ๊ธฐ๋ฒ์ผ๋ก ์คํ ํ์ผ or ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์ ํจ์ผ๋ก์จ ํํน์ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๋ชจ๋ํฐ๋ก ํจ์ ํธ์ถ์ ๊ฐ๋ก์ฑ๊ฑฐ๋ ์์ ํ ๋ค๋ฅธ ํจ์๋ก ๋์ฒดํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ญ์ด์ ๋ธ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ด์์ ํจ์์ ์์์ ์ ์ฐพ์ ๋ค์์, ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ๋์ ์ผ๋ก ๋ก๋ํ๊ณ , ๋ก๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์์ ์ํ๋ ํจ์๋ฅผ ์คํํ๋๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
ํด๋น๋๋ ๊ฒฝ์ฐ, ํํน์ผ๋ก ์ป์ ์ ์๋ ๊ด๋ จ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์คํ ํ์ผ์ ์ํฌํธ ํ ์ด๋ธ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค.
์ด ํ ์ด๋ธ์ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋์ ๋ก๋ํ๋๋ก ์์ ๋ ์ ์์๋ฟ๋ง์ด ์๋๋ผ ํจ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํด ํธ์ถ๋ ๋ ์ธ๋ถ ์ฝ๋๊ฐ ํธ์ถ๋๋ ๊ฒ์ผ๋ก ๋ฐ๋ ์๋ ์์ต๋๋ค.
์ด์ ๋ํ ๋์ฒ ๋ฐฉ์์ผ๋ก๋ ๋ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Wrapper Library)๋ฅผ ํตํด ํจ์ ํธ์ถ์ ์ฐจ๋จํ๋ ๊ฒ์ ๋๋ค.
๋ํผ๋ฅผ ๋ง๋ค ๋, ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ก๋ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ ๊ธฐ๋ฅ์ ๊ฐ์ง ์์ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
์ฆ, ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋ณธ๊ณผ ๋์ฒด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ ๋์ผํ ๊ฒ์ด๊ณ , ์ด ๋ํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฅ ์ค ํ๋๋ฅผ ํธ์ถํ๊ฑฐ๋, ๋ ผ๋ฆฌ์ ์์ ํ ์๋ก์ด ์ค์ ์ผ๋ก ๋์ฒด๋๋๋ก ์ค๊ณํ ์ ์์ต๋๋ค.
๋ฐํ์ ์์
์ด์์ฒด์ ์ ์ํํธ์จ์ด๋ ํ ์ ์ฝ์ ํ๋ ํ๋ก์ธ์ค์ ์ถฉ๋ถํ ๊ถํ์ด ๋ถ์ฌ๋ ๊ฒฝ์ฐ ๋ฐํ์ ๋์ค ์ด๋ฒคํธ ํ ์ ์ฝ๊ฒ ์ฝ์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, Windows์์๋ ๋ํ ์์, ์คํฌ๋กค๋ฐ ๋ฐ ๋ฉ๋ด๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ํญ๋ชฉ์ ๋ํ ์์คํ ์ด๋ฒคํธ์ ์์ฉ ํ๋ก๊ทธ๋จ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์๋ ํ ์ ์ฝ์ ํ ์ ์์ต๋๋ค.
๋ํ ํ ์ ํค๋ณด๋ ๋ฐ ๋ง์ฐ์ค ์ด๋ฒคํธ๋ฅผ ์ฝ์ , ์ ๊ฑฐ, ํ๋ก์ธ์ค ๋๋ ์์ ํ ์ ์์ผ๋ฉฐ, ๋ฆฌ๋ ์ค์์๋ ํ ์ด ๋ทํํฐ๋ฅผ ํตํด ์ปค๋ ๋ด์ ๋คํธ์ํฌ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ๋ ๋ค๋ฅธ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ง ์์ ๊ฒฝ์ฐ, ํํน์ ํน๋ณํ ํํ๋ ํ๋ก์ธ์ค์ ์ํด ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ ํธ์ถ์ ์ฐจ๋จํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
ํํน์ ๋์ ํจ์์ ์ฒซ ๋ฒ์งธ ๋ช๋ช ์ฝ๋๊ฐ ์ฃผ์ ์ฝ๋๋ก ์ด๋ํ๋๋ก ์ง์๋ฅผ ๋ณ๊ฒฝํ์ฌ ๊ตฌํ๋๊ณ ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋ ์ ์ฌ์ฉํ๋ ์์คํ ์์๋ ์ธํฐ๋ฝํธ ๋ฒกํฐ ํ ์ด๋ธ ๋๋ ์ํฌํธ ๋์คํฌ๋ฆฝํฐ ํ ์ด๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์์ ์์ ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ์ ์ ์ ๋ฌผ๋ฆฌ์ ์์ ๊ณผ ๊ฐ์ ์์ด๋์ด๋ฅผ ์ฌ์ฉํ์ง๋ง ์ด๋ฏธ ์คํ๋์ด ์๋ ์ํ๋ผ๋ฉด ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ช ๋ น๊ณผ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
Reference
'๐ ์ฐ์ฌ ์๋ฆฌ์ฆ > ์์ฃผ ์ฐ์ด๋ IT ์ฉ์ด ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Scale Up & Scale Out (2) | 2023.03.02 |
---|---|
์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๊ฒฝ (0) | 2022.08.11 |
์คํ (False Positive), ๋ฏธํ (False Negative) (0) | 2022.08.10 |
ํฌํ (Porting) & ๋ฐฑํฌํ (BackPorting) (0) | 2022.05.25 |
EOS, EOL ์ด๋ (2) | 2022.05.02 |