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

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

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..

32bit ์ด์์ฒด์ vs 64bit ์ด์์ฒด์ WORD: CPU๊ฐ ํ๋ฒ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ 32bit ์ํคํ ์ณ๋ word๊ฐ 32bit, 64bit ์ํคํ ์ณ๋ word๊ฐ 64bit!! (๋ ์ฒ๋ฆฌ์๋๊ฐ ๋น ๋ฅด๊ณ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ์ปค์ง) 32๊ฐ์ ๋นํธ๊ฐ ์๋ค๋ ๊ฒ์ 0000 0000 0000 0000 0000 0000 0000 0000 ๋ถํฐ 1111 1111 1111 1111 1111 1111 1111 1111 ๊น์ง, ๊ทธ๋ฌ๋๊น 2^32์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ๊ณ , 64๊ฐ์ ๋นํธ๊ฐ ์๋ค๋ ๊ฒ์ 2^64์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง ๋ฉ๋ชจ๋ฆฌ ํ ์นธ์ 1byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง(1byte๋ฅผ ์ ์ฅํ ์ ์๋ค๋ ๋ป์ธ๋ฏ....? ex: 0xA1) ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ 32bit์ํคํ ์ณ๋ 32bit (4byte) ์ง๋ฆฌ ์ฃผ์ (0x0000..

์ค๋ ๋ค๋ฃฐ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค. ์ปค๋ ๋ชจ๋์ ์ ์ ๋ชจ๋ ์์คํ ์ฝ(syscall)์ด๋ ๋ฌด์์ธ๊ฐ? (+syscall๊ณผ call๊ณผ์ ์ฐจ์ด) ํ๋ก์์ ๋? syscall์ ์๋ฆฌ (x86,x86_64) ์ปค๋, ์ ธ, ์ ์ ์ด์์ฒด์ ๋ ์ปดํจํฐ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ํ๋์จ์ด์ ์ํํธ์จ์ด์ ์ ๊ทผํ ์ ์๋ค. ์ด ๊ถํ์ ๋งค์ฐ ๋ง๊ฐํ๊ธฐ ๋๋ฌธ์ ์ปดํจํฐ๋ ํดํน์ผ๋ก๋ถํฐ ์ด๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ๊ถํ์ ์ปค๋ ๋ชจ๋์ ์ ์ ๋ชจ๋๋ก ๋๋๋ค. ๋ํ ๋ชจ๋๋ง๋ค ์ ๊ทผํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋๋๋ฐ, ์ปค๋ ๋ชจ๋์์๋ ์ปค๋ ๊ณต๊ฐ๊ณผ ์ ์ ๊ณต๊ฐ์, ์ ์ ๋ชจ๋์์๋ ์ ์ ๊ณต๊ฐ๋ง ์ ๊ทผ ํ ์์๋ค. ์ปค๋(Kernel) ๋ชจ๋, ์ปค๋ ์ปค๋์ ์ ์ ๊ฐ ์ง์ ํ ์ ์๋ ์ ์์ค์ ์์ (๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ์ ์ถ๋ ฅ, ํ์ผ ์์คํ , ๋คํธ์ํฌ ํต์ ๋ฑ)์ ์คํ ์ปค๋์ ์์์ ์ถ์ํํ์ฌ ๊ด๋ฆฌํจ ์๋๋..