๐ ์์ธ ์ ๋ฆฌ#
- ๋ฐ์ดํฐ์ ๋จธ์ ๋ ๋ฒจ ์ฝ๋๋ฅผ ์ง๊ธ๊น์ง ๋ฐ๋ก ์ดํด๋ณด์๋ค
- ์ด์ ๋ถํฐ๋ ํฉ์ณ์ ํ์ธํด๋ณด์
- ์ด๊ฑด ํฌ์ธํฐ ๋จ์๋ก ๊ณต๋ถํ ๊ฒ์ด๋ค.
- ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ ์ฐ๊ตฌํด๋ณด์
- ์คํ ์ ์ฅ๋์ด ์คํ๋ง๋ค ๋ค๋ฅผ ์ ์๋ ๊ฒฝ์ฐ? ๋ฅผ ํ์ธํด๋ณด์
- 3.10.1 Understanding Pointers
- ๋ชจ๋ ํฌ์ธํฐ๋ associated type์ด ์๋ค.
- ์ด๋ค object๋ฅผ ๊ฐ๋ฆฌํค๋์ง ๋ํ๋ด๋ ๊ฒ
- ๊ฐ์ฒด๊ฐ ํ์
T๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ, T์ ํฌ์ธํฐ๋ ํ์
*T๋ฅผ ๊ฐ๋๋ค.
- ํ์ *T์ ํฌ์ธํฐ๋ **T์ด๋ค.
- ๊ทธ๋ฅ * ๋ผ๊ณ ์ฐ๋ฉด ์ผ๋ฐ ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
- ์ด ํฌ์ธํฐ ์ ํ์ ๊ธฐ๊ณ์ฝ๋์ ์ผ๋ถ๋ ์๋์ง๋ง, ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด C๊ฐ ์ ๊ณตํ๋ ์ถ์ํ์
- ๋ชจ๋ ํฌ์ธํฐ์ ๊ฐ์ ์ผ๋ถ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค
- NULL(0)์ผ๋ ๋นผ๊ณ (์๋ฌด๋ฐ๋ ๊ฐ๋ฆฌํค์ง ์์)
- ํฌ์ธํฐ๋ &์ฐ์ฐ์ผ๋ก ์์ฑ๋๋ค
- ๊ธฐ๊ณ์ฝ๋์์๋ ์ฃผ๋ก leaq๋ก ๋ํ๋ด์ง๋๋ผ
- ํฌ์ธํฐ๋ *์ฐ์ฐ์ผ๋ก ์ญ์ฐธ์กฐ๋๋ค.
- ์ง์ ๋ ์ฃผ์๋ก ์ ์ฅํ๊ฑฐ๋ ์ง์ ๋ ์ฃผ์๋ก๋ถํฐ ๊ฒ์ํ๋ค.
- ๋ฐฐ์ด๊ณผ ํฌ์ธํฐ๋ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ค.
- ๋ฐฐ์ด์ ์ด๋ฆ์ ๋ง์น ํฌ์ธํฐ ๋ณ์์ธ ๊ฒ์ฒ๋ผ ์ฐธ์กฐ๋๋ค.
- ํฌ์ธํฐ๋ฅผ ์บ์คํ
ํ ๋, ๊ทธ ์ ํ์ ๋ฐ๋์ง๋ง ๊ทธ๊ฐ์ ๋ฐ๋์ง ์๋๋ค.
- ํ์ง๋ง ์ค์ผ์ผ๋ง์ ๋ฐ๊ฟ ์ ์๋ค
- EX) p๊ฐ char * ์ ํ์ ํฌ์ธํฐ์ธ ๊ฒฝ์ฐ
- (int *) p+7์ p+28์ ๊ณ์ฐํ๊ณ , (int *) (p+7)์ p+7์ ๊ณ์ฐํ๋ค.
- ํฌ์ธํฐ๋ ํจ์๋ฅผ ๊ฐ๋ฆฌํฌ ์๋ ์๋ค.
int fun(int x, int *p); int (*fp)(int, int *); fp = fun; int y = 1; int result = fp(3, &y);
- ํจ์ ํฌ์ธํฐ์ ๊ฐ์ ํจ์์ ๊ธฐ๊ณ์ฝ๋ ํํ์์ ์ฒซ๋ฒ์งธ ๋ช ๋ น์ด์ ์ฃผ์์ด๋ค.
- ๋ชจ๋ ํฌ์ธํฐ๋ associated type์ด ์๋ค.
- 3.10.2 Life in the Real World: Using the GDB Debugger
- gdb๋ GNU ๋๋ฒ๊ฑฐ
- ใ ใ bomb lab ํ๋ฉด์ ์ด๋ฏธ ์จ๋ดค์ง๋กฑ
- 3.10.3 Out-of-Bounds Memory References and Buffer Overflow
- C๋ ๋ฐฐ์ด ์ฐธ์กฐ์ ๋ํ ์์์ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๋๋ค
- ์ ์ฅ๋ ๋ ์ง์คํฐ๊ฐ
- ๋ฐํ ์ฃผ์์ ๊ฐ์ ์ํ ์ ๋ณด
- ๋ก์ปฌ ๋ณ์
- ์ด ๋ชจ๋ ๊ฒ๋ค์ด ์คํ์ ์ ์ฅ๋๋ค
- ๊ทผ๋ฐ ์ด๊ฑด ์ฌ๊ฐํ ํ๋ก๊ทธ๋จ ์ค๋ฅ๋ฅผ ์ด๋ํ ์๋ ์๋ค!!
- Out of bound ๋ฐฐ์ด ์์์ ์์ฑํ๋๊ฒ์ผ๋ก!
- ๊ทธ๋ฆฌ๊ณ ์ด์ํ๋ก ๋ ์ง์คํฐ๋ฅผ ๋ค์ ๊ฐ์ ธ์ค๊ฑฐ๋ ret ๋ช ๋ น์ด๋ฅผ ํ๋ ค๊ณ ํ๋ฉด ํฐ์ง ์ ์๋ค.
- ์ด๋ฐ๊ฑธ Buffer Overflow๋ผ๊ณ ํ๋ค.
- ๋ฌธ์์ด์ ์ ์งํ๊ธฐ ์ํด ์คํ ์์ ์ผ๋ถ ๋ฌธ์ ๋ฐฐ์ด์์ด ํ ๋น๋์ง๋ง, ๊ทธ ํฌ๊ธฐ๊ฐ ๋์ด๊ฐ ๊ฒฝ์ฐ
char *gets(char *s){ int c; char *dest = s; while((c = getchar()) != '\n' && c != EOF) *dest++ = c; if(c == EOF && dest == s) return NULL; *dest++ = '\0'; return s; } void echo(){ char buf[8]; gets(buf); puts(buf); }- ์ด๋ฐ ์ฝ๋๊ฐ ์๋ค๊ณ ํ์! ๊ทธ๋ฐ๋ฐ ์ด ์ฝ๋๋ ์ ๋ ฅ์ด ํฌ๊ธฐ์ธ 8์ ๋๋์ง ์๋๋์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค….
- ์ด์ ๋ธ๋ฆฌ๋ก๋ ๋ด๋ณผ๊น?
void echo()
- ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ ๋ฒ๊ทธ๊ฐ ํฐ์ง๋๊ฒ๋ ๋ฌธ์ ์ง๋ง..
- ์ํ์ง ์๋ ํ๋์ ๋ง์๋๋ก ํ ์ ์๋ค๋ฉด?
- ์ด๊ฒ์ด ์ปดํจํฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์์คํ ์ ๋ณด์์ ๊ณต๊ฒฉํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ
- ์ด๋ฅผ Exploit code๋ผ๊ณ ํ๋ค.
- ๋ญ ์ํผ ๋ณด์์ ์ํด์ผํ๋ค๋ ์ด์ผ๊ธฐ
- C๋ ๋ฐฐ์ด ์ฐธ์กฐ์ ๋ํ ์์์ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์๋๋ค
- 3.10.4 Thwarting Buffer Overflow Attacks
- ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฌธ์ ๊ฐ ๋๋๊น ํ๋ ์ปดํ์ผ๋ฌ์ ์ด์์ฒด์ ๋ ์ด๋ฅผ ๋ง๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ๊ธฐ ์์ํ๋ค
- Stack Randomization
- ์์คํ ๋ด์ ์ต์คํ๋ก์ ์ฝ๋๋ฅผ ์ฝ์ ํ๊ธฐ ์ํด์ ๊ณต๊ฒฉ์๋ ์ฝ๋์ ๋ํ ํฌ์ธํฐ๋ฟ๋ง ์๋๋ผ ์ฝ๋ ๋ชจ๋๋ฅผ ์ฃผ์ ํด์ผํจ.
- ๋ํ, ํด๋น ๋ฌธ์์ด์ด ๋ค์ด๊ฐ ์คํ/๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ์์์ผ๋๋ค!!
- ์ญ์ฌ์ ์ผ๋ก, ์ด๋ ์์ธก ๊ฐ๋ฅ์ฑ์ด ๋์๋ค.
- ๊ณต๊ฒฉ์๊ฐ ๊ณตํต ์น์๋ฒ์์ ์ฌ์ฉํ๋ ์คํ ์ฃผ์๋ฅผ ์ฐพ์๋ค๋ฉด?
- ๋ง์ ๋จธ์ ์์ ์๋ํ๋ ๊ณต๊ฒฉ์ ๋ง๋ค ์ ์์๋ค.
- ๊ทธ๋ฌ๋๊น, ์คํ์ ์์น๋ฅผ ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํ๋ง๋ค ๋ค๋ฅด๊ฒ ํ์.
- ๋ง์ ๋จธ์ ์ด ๊ฐ์ ์ฝ๋๋ฅผ ์คํํ๋๋ผ๋, ๋ชจ๋ ์์ดํ ์คํ ์ฃผ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
- allocaํจ์๊ฐ์๊ฑธ ์ด์ฉํด์ ํ๋ก๊ทธ๋จ ์์์ ์คํ์์ ๋๋คํ ๊ฐ์ ํ ๋นํ๋ค
- ์ด ๊ฐ์ ์ถฉ๋ถํ ๋ณ๋์ ์ป์์ ์์์ ๋๋ก ์ปค์ผํ์ง๋ง, ๋ญ๋นํ์ง ์์๋งํผ ์์์ผํ๋.. ๋น์ฐํ๋ง
- ๊ฐ๋จํ๊ฒ๋ ์ด๋ ๊ฒ ํ์ธ ๊ฐ๋ฅํ๋ค
int main(){ long local; printf("local at %p\n", &local); return 0; }- ์ด๋ ๊ฒ ํ๋ฉด ์ธ์ ๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง์ง ์์์ ํ์ธํ ์ ์๋ค.
- ์ด๋ ํ์ฌ ๋ฆฌ๋ ์ค ์์คํ ์์ ํ์ค ๊ดํ์ด๋ค.
- ํ์ง๋ง ์ด๋ ์ด๋์ ๋์ ๊ณต๊ฒฉ์ ๋ง์ ์๋ ์์ง๋ง
- ๊ณต๊ฒฉ์๊ฐ ์ ๋ง ํ๋ด๋ฉด ๋ค๋ฅธ ์ฃผ์๋ฅผ ๊ฐ์ง ๊ณต๊ฒฉ์ ๋ฐ๋ณต์ ์ผ๋ก ์๋ํด์ ๋ธ๋ฃจํธํฌ์ค๋ก ๊ทน๋ณต ๊ฐ๋ฅํ๋ค.
- Stack Corruption Detection
- ์คํ์ด ์์๋์์ ๋๋ฅผ ๊ฐ์งํ๋ฉด ๋์ง ์์๊น?
- echoํจ์๋ local buffer์ ๊ฒฝ๊ณ๋ฅผ ์ด๊ณผํ ๋ ํฐ์ก์๋ค
- C์์๋ ๋ฐฐ์ด์ ๊ฒฝ๊ณ๋ฅผ ๋์ด์ ์ฐ๊ธฐ๋ฅผ ๋ฐฉ์งํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค.
- ๋์ ํ๋ก๊ทธ๋จ์ ๊ทธ๋ฌํ ์ฐ๊ธฐ๊ฐ ์ด๋ ํ ํด๋ก์ด ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ๋ญ๊ฐ๊ฐ ๋ฐ์ํ์ ์๋์ง๋ฅผ ๊ฒ์ฌํ ์ ์๋ค.
- ์ด๋ ๋ฒํผ ์ค๋ฒ๋ฐ์ ๊ฒ์ถํ๊ธฐ ์ํด ์์ฑ๋ ์ฝ๋์ ์คํ ๋ณดํธ์๋ก ์๋ ค์ง ๋ฉ์ปค๋์ฆ์ ํตํฉํ๋ค (?)
- ์์์ ๋ก์ปฌ ๋ฒํผ์ ๋๋จธ์ง ์คํ๋ค ์ฌ์ด์ ํน๋ณํ canary ๊ฐ์ ์ง์ ํ๋ ๊ฒ
- ์ด๋ guard๊ฐ์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ง๋ค ๋ฌด์์๋ผ์ ๊ณต๊ฒฉ์๊ฐ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์๋ค.
- ์์์ ๋ก์ปฌ ๋ฒํผ์ ๋๋จธ์ง ์คํ๋ค ์ฌ์ด์ ํน๋ณํ canary ๊ฐ์ ์ง์ ํ๋ ๊ฒ
- ๋ ์ง์คํฐ๋ฅผ ๋ณต์ํ๊ณ ๋์๊ฐ๊ธฐ ์ ์, ํ๋ก๊ทธ๋จ์ ์ด canary๊ฐ ๋ณ๊ฒฝ๋์๋์ง ์๋๋์ง ํ์ธํ๋ค.
- ์ํ, ์์ ์ bomb lab์์ ๋ดค๋ %fs:40์ด ์ด๊ฑฐ์๊ตฌ๋!!!
- ์คํ์ด ์์๋์์ ๋๋ฅผ ๊ฐ์งํ๋ฉด ๋์ง ์์๊น?
- Limiting Executable Code Regions
- ๊ณต๊ฒฉ์๊ฐ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์คํ
์ ์ฝ์
ํ๋ ๋ฅ๋ ฅ์ ์ ๊ฑฐํ๋ ๊ฒ
- ๊ทธ์ค ํ๊ฐ์ง ๋ฐฉ๋ฒ์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅํ๋๊ฒ์ ์ ํํ๋ ๊ฒ
- ์๋ฅผ ๋ค์ด, ์ปดํ์ผ๋ฌ์ ์ํด ์์ฑ๋ ์ฝ๋๊ฐ ์๋ ๋ถ๋ถ๋ง ์คํ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ๋๋จธ์ง ๋ถ๋ถ์ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ง ํ์ฉํ๋๋ก ์ ํํ ์ ์๊ฒ ๋ค.
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ํ์ด์ง๋น 2048 / 4096๋ฐ์ดํธ์. (9์ฅ์์ ๋ฐฐ์ธ ๊ฒ)
- ํ๋์จ์ด๋ ํ๋ก๊ทธ๋จ / ์ด์์ฒด์ ๋ฑํํ ์ก์ธ์ค ํํ๋ฅผ ์ง์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ฅผ ์ง์ํจ
- ๋ง์ ์์คํ
๋ค์ ์ฝ๊ธฐ / ์ฐ๊ธฐ / ์คํ์ ๋ํ ์ ์ด๋ฅผ ํ์ฉํ๋ค.
- ์ญ์ฌ์ ์ผ๋ก x86์ ์ฝ๊ธฐ ๋ฐ ์คํ์ 1๋นํธ ํ๋๊ทธ๋ก ๋ณํฉํ์ฌ, ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฉด ์คํ๋ ๊ฐ๋ฅํ๋ค.
- ์คํ์ชฝ๋ ์ฝ์ด์ผํ๊ธฐ๋๋ฌธ์ ์คํ์ ๋ฐ์ดํธ๋ ์คํ์ด ๊ฐ๋ฅํ๋ค
- ํ์ง๋ง ์ด์ 64๋นํธ ํ๋ก์ธ์์์๋ AMD๋ ์ธํ ๋ ์ด๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์์ํ๋ค.
- ์ญ์ฌ์ ์ผ๋ก x86์ ์ฝ๊ธฐ ๋ฐ ์คํ์ 1๋นํธ ํ๋๊ทธ๋ก ๋ณํฉํ์ฌ, ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฉด ์คํ๋ ๊ฐ๋ฅํ๋ค.
- ๊ทธ์ค ํ๊ฐ์ง ๋ฐฉ๋ฒ์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅํ๋๊ฒ์ ์ ํํ๋ ๊ฒ
- ๊ณต๊ฒฉ์๊ฐ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์คํ
์ ์ฝ์
ํ๋ ๋ฅ๋ ฅ์ ์ ๊ฑฐํ๋ ๊ฒ
- ์ด ์ธ๊ฐ์ง ๊ธฐ์ ๋ค์ ํ๋ก๊ทธ๋๋จธ์ ๋ ธ๋ ฅ๋, ์ํ ์ค๋ฒํค๋๋ ์ ๋ค.
- ๊ฐ๋ณ์ ์ผ๋ก ์ทจ์ฝ์ฑ ์์ค์ ๋ฎ์ถ๊ณ , ์กฐํฉํด์ ๋ ์ข๊ธฐ๋ ํ๋ค.
- ํ์ง๋ง ๋ถํํ๋ ์ปดํจํฐ๋ฅผ ๊ณต๊ฒฉํ๋ ๋ฐฉ๋ฒ๋ค์ ์ฌ์ ํ ์กด์ฌํ๊ณ , worm๊ณผ ๋ฐ์ด๋ฌ์ค๋ค์ ๊ณ์ ๊ณต๊ฒฉํด๋๊ฐ๋ค.
- 3.10.5 Supporting Variable-Size Stack Frames
- ์ง๊ธ๊น์ง๋ ์ปดํ์ผ๋ฌ๊ฐ ์คํ์ ์ผ๋งํผ์ ํ ๋นํด์ผํ๋์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ ์ ์์๋ค.
- ํ์ง๋ง ์ผ๋ถ ๊ธฐ๋ฅ์ ์๊ตฌํ๋ ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์์ด ๋ฌ๋ผ์ง ์ ์๋ค!
- ์๋ฅผ๋ค์ด, alooca ๋ฑ์ ์์ ํฌ๊ธฐ์ ๋ฐ์ดํธ๋ฅผ ์คํ์ ํ ๋นํ๋ ๊ฑฐ๋ผ๋์ง,
- ๊ฐ๋ณ ํฌ๊ธฐ์ ๋ก์ปฌ ์ด๋ ์ด๋ฅผ ์ ์ธํ๋์ง
- ํ์ง๋ง ์ผ๋ถ ๊ธฐ๋ฅ์ ์๊ตฌํ๋ ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์์ด ๋ฌ๋ผ์ง ์ ์๋ค!
- ๋ฐ๋ผ์, ๋์ค์ ํจ์๋ก ๋์๊ฐ๋ ์คํ ํฌ์ธํฐ์ ์์น๊ฐ ์ด๋์๋์ง๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด, ์ด๋ฅผ ํ๋ ์ ํฌ์ธํฐ๋ง๋ฅ %rbp์ ์ ์ฅํด๋์!!
- ๊ทธ๋ฌ๋ฉด %rsp๊ฐ ์ผ๋ง๋ ํฌ๋๋ผ๋ ํจ์ return์ ์ด๋๋ก ๋์๊ฐ์ผํ๋์ง๋ ํ์คํ๋ค.
- ์ด๊ฑด ๊ธฐ๊ณ์ฝ๋์ leave๋ผ๊ณ ์๋ค.
- ์ง๊ธ๊น์ง๋ ์ปดํ์ผ๋ฌ๊ฐ ์คํ์ ์ผ๋งํผ์ ํ ๋นํด์ผํ๋์ง ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ ์ ์์๋ค.
โ์ง๋ฌธ ์ฌํญ#
- ์ 8๋ฐ์ดํธ๊ฐ ์๋ 24๋ฐ์ดํธ๋ฅผ ๋ก๊ฒผ์ง?
- -> 16๋ฐ์ดํธ ๋จ์๋ก rsp๋ฅผ ๋ง์ถ๊ธฐ ์ํด
- Stack Randomization, Stack Canary ๋ชจ๋ ์ปดํ์ผ ์๊ฐ์ ๊ฒฐ์ ๋๊ฑฐ ์๋๊ฐ? ๋๋ค๊ฐ์ด?
- ๊ฐ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌํ์ผ์ ์คํํ๋ฉด ๊ฒฐ๊ตญ ์ผ์ด๋๋์ผ์ ์ธ์ ๋ ๊ฐ์๊ฑด๊ฐ?
- -> ใด.ใด fs:40๊ฐ์๋ฐ ๋ค์ด์ด์๋ ๊ฐ์ ๋งจ๋ ๋ค๋ฅด๋ค
- ๊ทธ๋๋ RNG๊ฐ์ ์ฝ๋๊ฐ ๋ฐํ์๋๊ฑฐ ์๋๊ฐ?
- -> ๋ง๊ธด ํ๋ฐ, ๊ฐ๋จํ rand()๊ธ์ด ์๋๊ณ ๋ง์ฐ์ค ์์ง์ / ํ๋์จ์ด ์ธํฐ๋ฝํธ๋ฑ ๋ค์ํ ๋ถ๊ท์น์ ์ ํธ๋ค์ ๋ชจ์์ ๋ฌด์์ํํ๋ค.
- ์คํ์์ printf๊ฐ์๊ฑธ๋ก๋ ๋ชป์ฝ๊ฒ ์ฒซ๋ฒ์งธ ๋ฐ์ดํธ๋ฅผ 0x00(NULL)๋ก ์ค์ ํด์ ๋ฌธ์์ด ํจ์ ๋ฑ๋ ๋ฐฉ์ดํ๋ค!
- ๊ฐ์ ์ปดํ์ผ๋ ๋ฐ์ด๋๋ฆฌํ์ผ์ ์คํํ๋ฉด ๊ฒฐ๊ตญ ์ผ์ด๋๋์ผ์ ์ธ์ ๋ ๊ฐ์๊ฑด๊ฐ?
๐ ์ฐธ๊ณ ์๋ฃ#
- CSAPP
