rosieblue
article thumbnail
[์ปดํ“จํ„ฐ ๊ตฌ์กฐ] ALU

์‚ฌ์ „ ์ง€์‹ CPU๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์žฅ์น˜์ด๋‹ค. ALU๋Š” ๊ณ„์‚ฐ๊ธฐ์ด๊ณ , ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ž„์‹œ ๋ณด๊ด€ ์žฅ์น˜, ์ œ์–ด ์žฅ์น˜๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•ด์„œ ์ œ์–ด์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ALU 3-10๋ผ๋Š” ์—ฐ์‚ฐ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž ALU๋Š” ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€ํ’ˆ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์„ ์ธํ’‹์œผ๋กœ ๋ฐ›์•„์•ผํ•œ๋‹ค. ALU๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋กœ๋ถ€ํ„ฐ ํ”ผ์—ฐ์‚ฐ์ž(3,10)๋ฅผ ๋ฐ›๊ณ , ์ œ์–ด์žฅ์น˜๊ฐ€ ๋ณด๋‚ด์ฃผ๋Š” ์ œ์–ด์‹ ํ˜ธ(๋‘˜์ด ๋นผ์ค˜!)๋กœ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ• ์ง€๋ฅผ ์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๊ฐ’์ธ 8์„ ์ƒˆ๋กœ์šด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ๋˜ํ•œ 3-10

article thumbnail
[ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ

๐Ÿ”ROP ์‹œ๋ฆฌ์ฆˆ๐Ÿ” [ROP ์‹œ๋ฆฌ์ฆˆ (1)] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ

article thumbnail
[System/Assembly] ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ ํ˜ธํ™˜ํ‘œ

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

article thumbnail
[System] ์ปดํŒŒ์ผ ๊ณผ์ •์˜ ๋งํฌ(Link)์™€ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ(Object File)

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

article thumbnail
[System] ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ (x64, x32, 64bit, 32bit)

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

article thumbnail
[Pwnable] ์‹œ์Šคํ…œ์ฝœ(syscall), ์…ธ, ์ปค๋„๋ชจ๋“œ vs ์œ ์ €๋ชจ๋“œ

์˜ค๋Š˜ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ปค๋„ ๋ชจ๋“œ์™€ ์œ ์ € ๋ชจ๋“œ ์‹œ์Šคํ…œ์ฝœ(syscall)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? (+syscall๊ณผ call๊ณผ์˜ ์ฐจ์ด) ํ”„๋กœ์‹œ์ €๋ž€? syscall์˜ ์›๋ฆฌ (x86,x86_64) ์ปค๋„, ์…ธ, ์œ ์ € ์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ถŒํ•œ์€ ๋งค์šฐ ๋ง‰๊ฐ•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํ“จํ„ฐ๋Š” ํ•ดํ‚น์œผ๋กœ๋ถ€ํ„ฐ ์ด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ๊ถŒํ•œ์„ ์ปค๋„ ๋ชจ๋“œ์™€ ์œ ์ € ๋ชจ๋“œ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“œ๋งˆ๋‹ค ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚˜๋ˆ„๋Š”๋ฐ, ์ปค๋„ ๋ชจ๋“œ์—์„œ๋Š” ์ปค๋„ ๊ณต๊ฐ„๊ณผ ์œ ์ €๊ณต๊ฐ„์„, ์œ ์ €๋ชจ๋“œ์—์„œ๋Š” ์œ ์ € ๊ณต๊ฐ„๋งŒ ์ ‘๊ทผ ํ•  ์ˆ˜์žˆ๋‹ค. ์ปค๋„(Kernel) ๋ชจ๋“œ, ์ปค๋„ ์ปค๋„์€ ์œ ์ €๊ฐ€ ์ง์ ‘ํ•  ์ˆ˜ ์—†๋Š” ์ €์ˆ˜์ค€์˜ ์ž‘์—…(๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์ž…์ถœ๋ ฅ, ํŒŒ์ผ ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋“ฑ)์„ ์‹คํ–‰ ์ปค๋„์€ ์ž์›์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•จ ์•„๋ž˜๋Š”..