GCC Stack Smashing Protector
C ์ปดํ์ผ๋ฌ์๋ ๊ต์ฅํ ์ข ๋ฅ๊ฐ ๋ง์ต๋๋ค. Dev C Compiler, Visual C Compiler, GNU C Compiler .... ๋ญ ๊ทธ ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง์?
์ค๋์ Buffer Overflow๋ผ๋ ๊ฒ์ ์ฃผ์ ๋ก ์์ํ์ฌ, GNU C Compiler์ ์กด์ฌํ๋ Stack Smashing Protector๊ฐ ์ด๋ค ๊ฒ์ธ์ง๋ฅผ ์ค๋ช
ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์, ์ด๋ค ์ฝ๋๋ฅผ ์ ๊ฐ ์์ฑ์ ํด์ ์ด๋ ๊ฒ ์ ๋ ฅ์ ๋ฐ๊ณ ๋ฌ๋๋, ์์ ๊ฐ์ด ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฟ์ด๋ ๋๋ค. ์ ๊ทธ๋ด๊น์? ์์ค ์ฝ๋๋ฅผ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฝ๋๋ฅผ ํ ๋ฒ ๋ถ์ํด๋ด ์๋ค. ๋ฐฐ์ด์ ์ด์ฉํด์, 1๊ฐ์ ๊ณต๊ฐ์ ์ด๊ธฐํ ํด์ฃผ๊ธด ํ์ง๋ง, i ์ ๋ณ์๋ฅผ ํตํด, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค(?) ๊ทธ๋ฆฌ๊ณ , fibonacci ๋ผ๋ ํจ์๋ฅผ ์จ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๊ตฐ์. ์ ์ฌ๊ธฐ์ ์ด๋ค ๋ถ๋ถ์ด ๋ฌธ์ ์ผ๊น์?
๋ฐ๋ก, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค. ๋ถ๋ช 1๊ฐ์ ๊ณต๊ฐ์ ๋ถ์ฌํ์ง๋ง, ๋ง์ฝ 3๊ฐ ์ด์์ ๊ณต๊ฐ์ ๋ถ์ฌํ์ฌ, ์ซ์๋ฅผ ์ ๋ ฅ๋ฐ๊ฒ ๋๋ฉด, Overflow๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด์ GCC ์ปดํ์ผ๋ฌ์์๋ *** stack smashing detected *** ๋ผ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
BOF(Buffer OverFlow)
์์คํ ๋ณด์์ด๋, ์ด์ ๋ง ํ๋ก๊ทธ๋จ ์ทจ์ฝ์ ์ ๋ถ์ํ๋ ์ฌ๋๋ค์ด๋ผ๋ฉด, ์ด๋ฐ ๋จ์ด๋ ๊ทธ๋ฅ ๊ธฐ์ด์ ์ธ ๋จ์ด์ ๋ถ๊ณผํ ๊ฒ์ ๋๋ค. ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ ์ปดํจํฐ ๊ณผํ ์ ๊ณต์๋ค์ด๋ผ๋ฉด, ์๊ณ ๋ฆฌ์ฆ ์๊ฐ์๋ ์ ํ ์ ์๋ ํ๋ก๊ทธ๋จ ์ทจ์ฝ์ ์ ์ผ์ข ์ด๋ค.
๊ทธ๋ฆผ์ผ๋ก ํ ๋ฒ ์ค๋ช ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ผ๋จ ๊ต์ฅํ ๋จ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ ค๋ดค์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ์๊ฐํ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋์ถฉ ์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค. ์ฌ์ค ์ด ์์ญ์ ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๊ณ ๋ ํฉ๋๋ค. ์ด๊ฒ ์ธ์๋ ์์คํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ผ๊ณ ์๋๋ฐ, ์ด ๋ถ๋ถ์ ์ด ๋จ์๊ณผ ๊ด๊ณ๊ฐ ์์ผ๋ฏ๋ก ์๋ตํ๊ฒ ์ต๋๋ค.
๊ฐ๊ฐ์ ์์ญ์ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
Code Area : ์ด ๊ณต๊ฐ์๋ ์ฌ๋ฌ๋ถ๋ค์ด ์ง์ ์ง C ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ ๋ช ๋ น์ด ๊ณต๊ฐ์ ๋๋ค.
Data Area : ์ฌ์ฉ์๊ฐ ์ง์ ์ ๋ ฅํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๊ณต๊ฐ์ ๋๋ค.
Heap Area : ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ ๋๋ค. C๋ C++๋ฅผ ํตํด malloc ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด ์์ญ์ ๋ค์ด์ต๋๋ค.
Stack Area : ํจ์ ์ธ์, ์ง์ญ ๋ณ์๋ค์ด ์ด ๊ณต๊ฐ์ ๋ค์ด์ต๋๋ค.
์ ์กฐ๊ธ ์ดํด๊ฐ ๋์ จ๋์ง์?
๊ฐ๋จํ๊ฒ ๋ถ๊ฐ์ ์ธ ์ค๋ช ์ ์ฌ๋งํด์ ์ ์ธํ๊ณ , ์ฝ๋ฉ์ ํ ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ๋ค๋ง ์ค๋ช ํด๋ดค์ต๋๋ค.
์ฌ๊ธฐ์ ์ค๋ฒํ๋ก์ฐ๋ผ๋ ๊ฒ์ ์ฝ๋ ์์ญ ์์์ ์ ํด์ค ๊ณต๊ฐ์ ์ง๋์น๊ฒ ์ฌ์ฉํ์ฌ, ๋ค๋ฅธ ๊ณต๊ฐ์ผ๋ก ๋์ด๊ฐ๋ ๊ฒ์ ์ค๋ฒํ๋ก์ฐ๋ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด, ํ๋ก๊ทธ๋จ์์ ์ถ๋ ฅ๋๋ ๊ฐ์ ์ฐ๋ ๊ธฐ๊ฐ (์๋ชป๋ ๊ฐ)์ด ์ถ๋ ฅ๋ ์๋ ์๊ณ , ํด์ปค๋ค์ด๋ ๊ณต๊ฒฉ์๋ค์๊ฒ ์ด ๋ถ๋ถ์ด ๋ ธ์ถ๋๋ฉด, ๋ณด์์์ ๊ฒฐํจ์ ์ถ๊ฐ๋ก ๋ ธ์ถ์ํค๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ์ํํฉ๋๋ค.
์์๋ก ๋ฐฉ๊ธ ์์ ์๋ ์ฝ๋์์ arr ๋ฐฐ์ด์ด ๋ฐ์ดํฐ ์์ญ์ ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ณต๊ฐ์ ์ ํด์ ธ ์์ง ์์ ๊ฐ๋ณ ๋ฐฐ์ด ๋ณ์๋ก, ์ด๊ธฐํ ์ํจ ๋ฐฐ์ด์ ๊ฐ์ ํตํด ์คํ ์์ญ์์๋ NULL ๊ฐ์ ํฌํจํ์ฌ ์ต์ 2~3๊ฐ์ ๊ณต๊ฐ์ ๋ง๋ค์ด๋ผ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๋ง์ฝ i ๋ณ์์์ 3๊ฐ ์ด์์ ๊ณต๊ฐ์ ๋ง๋ จํ์ฌ ์ ๋ ฅ ๊ฐ์ ๊ทธ ์ด์ ๋ฐ์๋ค๋ฉด? ๋น์ฐํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ์ฌ ๋ค๋ฅธ ๋ณ์ ๊ณต๊ฐ์ ์ํฅ์ ์ฃผ๊ฒ ๋ฉ๋๋ค.
๋ํ์ ์ธ ํจ์๋ก๋ ์์ ์ฝ๋์์ ์ฌ์ฉ๋ scanf ํจ์๊ฐ ๊ฐ์ฅ ๋ํ์ ์ ๋๋ค.
์ค์ ๋ก Visual C++ 2010 ์ปดํ์ผ๋ฌ ์ด์์์๋ scanf์ ์ฌ์ฉ์ ์ ํํ๊ณ ์๊ณ , scanf๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋ฌ๋ฅผ ๋ฟ์ด๋ด๋ฉฐ, ํน์ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ์ผ๋ง ์ด ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. MS์์๋ ์ด ํจ์ ๋์ , ์์ฒด์ ์ผ๋ก ๋ง๋ scanf_s ์ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์๊ณ , scanf์์ ์ฐจ์ด์ ์ ๋ฌธ์์ด์ด๋ ๋ฌธ์ ๊ฐ์ ์ ๋ ฅ๋ฐ์ ๋, ๊ณต๊ฐ์ ์ง์ ์ ํด์ ์ฌ์ฉํด์ผํ๋ ๊ฒ์ ๋๋ค.
์์ ๊ฐ์ด Visual C++์์๋ scanf ์ฌ์ฉ์ ์ ํํ๊ณ ์์ต๋๋ค. scanf ๋์ scanf_s์ ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์์ผ๋ฉฐ, ํด๋น ์ฌํญ์ char ์๋ฃํ์ ๋ํด์๋ง ์ ํํ๊ณ ์๋ ์ฌํญ์ ๋๋ค.
๋ฐ๋๋ก, GNU C Compiler์ ๊ฒฝ์ฐ์๋ scanf_s๊ฐ ์ ๊ณต๋์ง ์์ต๋๋ค. scanf ์ฌ์ฉ ์ ํ์ ํ์ง ์์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ(์๊น ์์์ ๋ดค๋ ๊ฒ์ฒ๋ผ Overflow๊ฐ ๋ฐ์), stack smashing์ด ๋ณดํธํ์๋ค๋ ๋ฉ์์ง์ ํจ๊ป ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ํํ๊ฒ ์ด๋ค ๋ถ๋ถ์์ Stack Smashing Protector๊ฐ ๋๋์ง๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํด, GCC์์ Stack Smashing Protector๋ฅผ ๊ฐ์ ์ต์ ์ผ๋ก ์ฃผ์ด, ์ปดํ์ผ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
gcc -fstack-protector -S Source.c
์ด์ ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ํ ๋ฒ ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
fibonacci ํจ์์์๋ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ๋ค์...
์ฌ๊ธฐ๋ ๋ณ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ....
scanf๋ฅผ call ํ๋ ๋ถ๋ถ์ ๋ํด์๋ Stack Smashing Protector๊ฐ ๋์ํ๋ ๋ถ๋ถ์ ์ฐพ์ ์ ์์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋๋์ฒด ์ด๋์ ๋์ํ๋๊ฑด์ง...
์ ํํ ๋ถ์์ ์ํด์, GDB๋ฅผ ์ฌ์ฉํด์ ๋ถ์์ ๋ค์ ์๋ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
GDB๋ฅผ ์ฌ์ฉํด์, ๋ฐ๋ณต๋ฌธ ๊ตฌ๊ฐ์ Breakpoint๋ฅผ ๋ถ์ฌํ๊ณ , ํ๋ก๊ทธ๋จ์ ๋ค์ ์คํํด๋ดค์ต๋๋ค.
์ด์ ๋ธ๋ฆฌ์ด ์ฝ๋๋ฅผ ๋ณด๋, 0x400778 ๊ตฌ๊ฐ์ __stack_chk_fail ๋ถ๋ถ์ ๋ฐ๊ฒฌํ์ต๋๋ค. __stack_chk_fail ํธ์ถํ ๊ฒฝ์ฐ, GCC ์ปดํ์ผ๋ฌ์์ Stack Smashing Protector๋ฅผ ๋์์ํจ๋ค๊ณ ํ ์ ์์ต๋๋ค. ์ด ๊ตฌ๊ฐ์ stack canary check์ ์คํจํ ๋ถ๋ถ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ด ํ๋ก์์ ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์๋ํ๋๊ฑธ๊น์?
๋ณดํต, ์ปดํ์ผ๋ฌ๋ ํจ์์ ์ง์ ์, return address์ frame pointer ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ฅ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฒ ๋๋ฉด, ๋๋ฒ๊น ์, return ์ฃผ์๊ฐ์ ๋ณ์กฐํ์ฌ ์ทจ์ฝ์ ์ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
Stack Smashing Protector๋ ์ด ๋ณ์กฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ๋ฉ๋ชจ๋ฆฌ์ canary๋ผ๊ณ ํ๋ ํน์ ๊ฐ์ ์์ฑํ๊ณ , ํจ์์์ ๋ฆฌํดํ์ ๋, ์ปดํ์ผ๋ฌ๊ฐ ์ฒ์ ํจ์์ ์ง์ ํ์ ๋ return address์ ์ผ์น/๋ถ์ผ์น๋ฅผ ๊ฒ์ฆ์ ํฉ๋๋ค. ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด, Cookie๋ ๊ฑฐ์ ๋น์ทํ ๊ฐ๋ ์ด์ง์.
์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ, ๊ณต๊ฒฉ์๋ canary ๊ฐ์ ๋ณ์กฐํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ canary ๊ฐ์ ๋ณ์กฐ๊ฐ ๋์๋์ง ํ์ธ๋ง ํ ์ ์๋ค๋ฉด, Overflow๊ฐ ์๊ฒผ๋์ง๋ฅผ ํ์ธํ ์ ์๋ค๋ ์ฌ์ค์ด ์ ์ฆ๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, canary ๊ฐ์ ์ด๋ป๊ฒ ์์ฑ๋๋ ๊ฒ์ผ๊น์?
์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง, ๊ทธ ์ค์์๋ ์ ๊ฐ ์ฌ์ฉํ๊ณ ์๋ Ubuntu Linux์์๋ OTP์ฒ๋ผ ํ์ฌ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋์๋ฅผ ์์ฑํ๋ฉฐ, ํ์ ๋ฐ์ดํธ๋ฅผ ํญ์ 0์ผ๋ก ๋ง๋ค์ด์ ์ฌ์ฉํฉ๋๋ค. ๋ณดํต ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ Random + terminator canary ํํ๋ผ๊ณ ํฉ๋๋ค.
์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ, ๊ณต๊ฒฉ์๊ฐ ์๋ฌด๋ฆฌ canary ๊ฐ์ ๋๋ค๊ธฐ๋ ค ํด๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค๋ ๊ฐ์ ์ด ์๊น๋๋ค. ๋ฌด์์๋ก ์์ฑ๋๋ Random์ ๊ณต๊ฒฉ์๊ฐ ์ผ์ผ์ด ์คํํ ๋๋ง๋ค ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ์ถํ๊ธฐ๋ ์ด๋ ต๊ณ , terminator์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์์ด ์ฐ์ฐ ๊ฐ์ง๊ณ ๋ ๋ฎ์ด์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋ฌธ์์ด์ ๋๊ฐ์ NULL์ด๋ผ๊ณ ํ๋ \0, \n, -1 ๊ฐ์ ํด๋นํ๊ธฐ ๋๋ฌธ์ด์ง์..
๋ค์ ์ด์ ๋ธ๋ฆฌ์ด ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋๋ฉด, ์ด ์ฝ๋์์๋ gs ๋ ์ง์คํฐ๊ฐ ์ฌ์ฉ๋์ง ์์์ ์ ์ ์์ต๋๋ค. ๋ณดํต ํจ์์์ ์ค๋ฒํ๋ก์ฐ๊ฐ ์ผ์ด๋๋ฉด, canary ๊ฐ์ ํ์ธํ๊ธฐ ์ํด gs ๋ ์ง์คํฐ์ ์ผ์ ๊ณต๊ฐ์ ๋จ๊ฒจ ์ ์ฅํฉ๋๋ค. ํ์ง๋ง ์ด ํฌ์คํธ์ ์ฝ๋๋ ํจ์์ ๋ฐํ ๊ฐ์์ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์๋์ง ์๊ธฐ ๋๋ฌธ์ canary ๊ฐ์ __stack_chk_guard๋ผ๋ ์ ์ญ ๋ณ์์ canary ๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
Linux Kernel์ ์ปดํ์ผ ํ ๊ฒฝ์ฐ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ ์ ์์ต๋๋ค.
__stack_chk_fail ํจ์๋ Kernel์์๋ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋ฉด, ํจ๋์ ์ผ์ผํต๋๋ค. ์ค๋ฒํ๋ก์ฐ ์ทจ์ฝ์ ์ ๊ต์ฅํ ๊ธฐ์ด์ ์ด๋ฉด์๋ ์ทจ์ฝ์ ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ปค๋์์๋ panic ์์ค๊ธ์ผ๋ก ๋์ด์ฌ๋ฆฝ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ฉํ๋ค ์๊ธด ์ค๋ฅ๋ ์์ ๊ฐ์ด fortify_fail ํํ์ ์๋ฌ๋ก ๋ํ๋ฉ๋๋ค.
ํด๋น ์ดํ์ ๋ํ๋๋ ๋ฉ์์ง๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์๋ค๋ ๋ฉ์์ง๊ฐ ๋ณด๊ณ ๋ฉ๋๋ค.
์ฌ๊ธฐ๊น์ง, Stack Smashing Protector์ ๋ํด์ ์์๋ดค์ต๋๋ค. ์กฐ๊ธ ๊ธด ๋ด์ฉ์ด๊ณ , ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ง์ต๋๋ค. ํ์ง๋ง C์ธ์ด์ ๊ฐ์ Low ๋ ๋ฒจ์ ์ธ์ด๋ฅผ ๊ณต๋ถํ์ค ๋๋ ์ด๋ฐ ๋ถ๋ถ๋ค์ด ๊ต์ฅํ ์ค์ํฉ๋๋ค. ๋์ค์ ํฌ์ธํฐ๋ฅผ ๋ค๋ฃจ๋ฉด์ ๋๋ผ์ค์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฌ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๋ถ๋ถ์ด ์๋ชปํด์ ์ทจ์ฝ์ ์ด ์๊ธฐ๊ธฐ๋ ํ๊ณ , ํนํ ์ด์์ฒด์ ๋ ์๋ฒ ๋๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฟ๊พธ์๋ ๋ถ๋ค์ด๋ผ๋ฉด, ๊ณ ๋ คํด๋ด์ผ ํฉ๋๋ค.
๋ณดํต Windows์์ ์ฌ์ฉ๋๋ Visual C ์ปดํ์ผ๋ฌ๋ ์ด ์ ๋๊น์ง๋ ๊ฐ์ง ์๋ ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค. Windows์์๋ ASLR(Address Space Layout Randomization)์ด๋ผ๋ ๊ธฐ์ ์ Windows Kernel 6.0 (Windows Vista)์์ ์ฑํํ์์ผ๋ฉฐ, ์ด ๊ธฐ์ ๋ํ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ธฐ์ ๋ก ์๋ ค์ ธ ์์ต๋๋ค.
Stack Smashing Protector๋ 2007๋ ๋ GCC์์ ์ฒ์ ๋ฑ์ฅํ์ผ๋ฉฐ, Mac OS X (Apple Inc.) ๋ํ ์ด ๊ธฐ์ ์ ์ ์ฉํ๊ณ ์์ต๋๋ค. ๋ฌผ๋ก Linux์๋ ๋ค๋ฅธ ๋ฉ์์ง๋ฅผ ๋ณด์ธ๋ค๊ณ ํ๋, Apple Open Source Page์์ ํ ๋ฒ ํ์ธํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
'Programming > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
chkmd5 (ํ์ผ MD5 ํด์๊ฐ ๊ฐ์ ธ์ค๋ ํ๋ก๊ทธ๋จ, only Windows OS) (0) | 2017.01.26 |
---|---|
System Call Function VS Library Call Function (0) | 2016.12.26 |
Boost thread Library (0) | 2013.08.12 |
Boost Random Number Generator Library (0) | 2013.04.12 |
Boost Library (0) | 2013.04.12 |