
์ฌ์ ์ง์ CPU๋ ๋ช ๋ น์ด๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์ฅ์น์ด๋ค. ALU๋ ๊ณ์ฐ๊ธฐ์ด๊ณ , ๋ ์ง์คํฐ๋ ์์ ๋ณด๊ด ์ฅ์น, ์ ์ด ์ฅ์น๋ ๋ช ๋ น์ด๋ฅผ ํด์ํด์ ์ ์ด์ ํธ๋ฅผ ๋ณด๋ด๋ ์ญํ ์ ํ๋ค. ALU 3-10๋ผ๋ ์ฐ์ฐ์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์ ALU๋ ๊ณ์ฐํ๋ ๋ถํ์ด๊ธฐ ๋๋ฌธ์ ํผ์ฐ์ฐ์์ ์ฐ์ฐ์ ์ธํ์ผ๋ก ๋ฐ์์ผํ๋ค. ALU๋ ๋ ์ง์คํฐ๋ก๋ถํฐ ํผ์ฐ์ฐ์(3,10)๋ฅผ ๋ฐ๊ณ , ์ ์ด์ฅ์น๊ฐ ๋ณด๋ด์ฃผ๋ ์ ์ด์ ํธ(๋์ด ๋นผ์ค!)๋ก ์ด๋ค ์ฐ์ฐ์ ํ ์ง๋ฅผ ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๊ฐ์ธ 8์ ์๋ก์ด ๋ ์ง์คํฐ์ ์ ์ฅํ๋ค. ๋ํ 3-10

๐ROP ์๋ฆฌ์ฆ๐ [ROP ์๋ฆฌ์ฆ (1)] ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋งํฌ

TLS(Thread Local Storage)๋? TLS๋ Thread Local Storage์ ์ฝ์๋ก thread๋ณ๋ก ๊ณ ์ ํ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์ ์ฅํ ์ ์๊ฒ ํ๋ ๊ณต๊ฐ์ด๋ค. ์ค๋ ๋๋ ์๋ ์ค๋ ๋ ๋ณ๋ก ๊ณ ์ ์ ์คํ์ ๊ฐ์ง์ง๋ง, ์ ์ญ/์ ์ ๋ณ์๋ ํ๋ก์ธ์ค์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ์ ์ญ/์ ์ ๋ณ์๋ฅผ ์ค๋ ๋ ๋ณ๋ก ํ ๋นํด์ฃผ๊ณ ์ถ์ ๋ TLS๋ฅผ ์ฌ์ฉํ๋ค. (๋ฐ๋ผ์ TLS์ ๋ค์ด์๋ ์ ๋ค์ ์ง์ญ ๋ณ์์ ๋ค๋ฅด๊ฒ ํจ์ above์์ ๋ค visibleํ๋ค) TLS๋ ํ๋ก์ธ์ค ์คํ์ ํ์ํ ์ฌ๋ฌ ์ ๋ณด๊ฐ ๋ค์ด์๋ค fs๋ TLS๋ฅผ ๊ฐ๋ฆฌํค๋๋ฐ, ์๋ฅผ ๋ค์ด fs:0x28์๋ ์คํ ์นด๋๋ฆฌ์ ๊ฐ์ผ๋ก ์ฐ์ด๋ ๋๋คํ ๊ฐ์ด ์ ์ฅ๋๋ค. ๋์ถฉ tls ์์ฑํ๋ ํจ์์ ์๋๋ ใ ใ static void * init_tls (v..

ํ๋ก๊ทธ๋จ (Program) ํ๋ก๊ทธ๋จ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ฐ๋ฏ ๊ทธ์ ํ๋์ ์ฑ?์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค. ์ฑ์ด๋ผ๋ ์ฉ์ด๊ฐ ์ฌ์ค ์ฌ๊ธฐ์ ์ ํํ์ง ์์ง๋ง ๋น์ ๊ณต์๋ถ๋คํํ ๋ ์ด๋ ๊ฒ ์ค๋ช ํ๋ฉด ์ฌ์ธ ๊ฒ ๊ฐ๋ค. ์๋ฅผ ๋ค์ด ํฌ๋กฌ์ด๋ ๋ ธ์ , ์๋ ๊ฐ์ ๊ฒ๋ค์ด ๋ค ํ๋ก๊ทธ๋จ์ด๋ค. (exe๊ฐ์ ๊ฑฐ ๋ถ์ฌ์ง ์ ๋ค!! exe๋ง๊ณ ๋ค๋ฅธ ํ์ฅ์๋ ๊ฐ๋ฅ~) ์ด๋ฌํ ํ๋ก๊ทธ๋จ์ ์ค๊ณํ ๋๋ ๋ณดํต C์ธ์ด์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ๋ฏ๋ก ํ๋ก๊ทธ๋จ์ ์ด๋ ํ ํ ์คํฌ๋ฅผ ์ํํ ์ ์๋ ๊ทธ์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ผ๊ณ ๋ณด๋ฉด ํธํ๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? ํ๋ก์ธ์ค (Process) ์ด๋ ํ๋ก์ธ์ค๋ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ํ๋ก๊ทธ๋จ์ ์์ง ์คํ๋์ง ์์ ์ ์ ์ธ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ผ๋ฉด, ํ๋ก์ธ์ค๋ ์คํ๋๊ณ ์๋ ๋์ ์ธ ์์ด๋ผ๊ณ ..

x86(32๋นํธ) ์ํคํ ์ฒ์ ๋ฒ์ฉ ๋ ์ง์คํฐ 32๋นํธ ๋ ์ง์คํฐ: eax, ebx, ecx, edx, esi, edi, ebp, esp (8๊ฐ๋ง ์๊ณ r8~r16์ ์์) 16๋นํธ ๋ ์ง์คํฐ: ax, bx, cx, dx, si, di, bp, sp 8๋นํธ ๋ ์ง์คํฐ: al, bl, cl, dl, sil, dil, bpl, spl x86-64 ์ํคํ ์ฒ์ ๋ฒ์ฉ ๋ ์ง์คํฐ 64๋นํธ ๋ ์ง์คํฐ: rax, rbx, rcx, rdx, rsi, rdi, rbp, rsp, r8 ~ r15 32๋นํธ ๋ ์ง์คํฐ(ํ์ 32๋นํธ๋ง ์ฌ์ฉ): eax, ebx, ecx, edx, esi, edi, ebp, esp, r8d ~ r15d 16๋นํธ ๋ ์ง์คํฐ(ํ์ 16๋นํธ๋ง ์ฌ์ฉ): ax, bx, cx, dx, si, di, bp, sp, r8w ~..

C์ฝ๋๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์ปดํ์ผ ํ ๋ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ํ ๋ Object File์ด ๋ ๋๋ ์๊ณ ,,, ๊ธฐ๊ณ์ด ์ฝ๋๊ฐ ๋ ๋๋ ์๊ณ (?)ํด์ ๋๋์ฒด ๋์ ์ฐจ์ด๊ฐ ๋ญ์ง, ๊ทธ๋ฆฌ๊ณ ์ค๋ธ์ ํธ ํ์ผ์ด๋ผ๋๊ฒ ์ ํํ๊ฒ ๋ญ ์ง์นญํ๋์ง ๊ถ๊ธํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๊ฐ์ ๋์ค๋ '๋งํฌ'์ ๊ฐ๋ ์ ๋ค๋ค๋ณด๊ณ ์ ํ๋ค. ์ค๋ ๋ค๋ฃฐ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค ๊ธฐ๊ณ์ด ์ฝ๋ vs ์ค๋ธ์ ํธ ์ฝ๋ (vs ์ด์ ๋ธ๋ฆฌ ์ฝ๋) ๋งํฌ(Link)์ ๊ฐ๋ gcc vs as ๊ธฐ๊ณ์ด ์ฝ๋ vs ์ค๋ธ์ ํธ ์ฝ๋ (vs ์ด์ ๋ธ๋ฆฌ ์ฝ๋) ๋ ์๋ ๊ธ์ ์ฐธ๊ณ ํ์๋ค. https://stackoverflow.com/questions/466790/assembly-code-vs-machine-code-vs-object-code#:~:text=Object%20code%20i..