ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€

ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€ 9์ผ์ฐจ : ํ˜„์‹ค ์„ธ์ƒ์˜ ์ปดํ“จํ„ฐ๊ณตํ•™ ์ง€์‹ with 30๊ฐ€์ง€ ์‹ค๋ฌด ์‹œ๋‚˜๋ฆฌ์˜ค ์ดˆ๊ฒฉ์ฐจ ํŒจํ‚ค์ง€ Online. ๊ฐ•์˜ ํ›„๊ธฐ

๐ŸŒŠwave 2025. 4. 9. 23:18

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

https://abit.ly/lisbva

 

Abit.ly ๋‹ค์šด๋ฐ›๊ธฐ

 

abit.ly

 

 

๊ณต๋ถ€ ์‹œ์ž‘ ์‹œ๊ฐ„ - 22:48

 

 

๊ฐ•์˜์žฅ ๋ชฉ๋ก

 

 

 

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ๊ฒŒ ํŒŒํ—ค์ณ๋ณด์ž, ARABOZA!!!
CPU์˜ ํ•ต์‹ฌ ๋ถ€ํ’ˆ ์ค‘ ํ•˜๋‚˜์ธ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ตœ์ €์ˆ˜์ค€์—์„œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ •๋ง ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

 

godbolt.org์—์„œ C ์ฝ”๋“œ๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜๋˜๋Š”์ง€ ์ง์ ‘ ํ™•์ธํ•˜๋ฉด์„œ ๋А๋‚€ ์ ์€, ์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ๋ณด๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ์ฝ”๋“œ์™€ ๋‹ฌ๋ฆฌ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ๋Š” ์ˆ˜๋งŽ์€ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์ด ํ˜‘๋ ฅํ•˜๋ฉฐ ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์ •๋ง ์‹ ๊ธฐํ–ˆ๋‹ค.

 

๋จผ์ € ๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.

๋ฒ”์šฉ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์˜ ์ž„์‹œ ์ €์žฅ, ์‚ฐ์ˆ  ๋ฐ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ, ์ฃผ์†Œ ์ƒ‰์ธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ชฉ์  ์ €์žฅ ๊ณต๊ฐ„์ด๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ๋ ˆ์ง€์Šคํ„ฐ๋กœ๋Š” EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP, EIP ๋“ฑ์ด ์žˆ๋Š”๋ฐ, ์ด๋“ค์€ ๊ด€๋ก€์ ์œผ๋กœ ํŠน์ • ์—ญํ• ์„ ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋‚˜ ํ˜ธ์ถœ ๊ทœ์•ฝ(stdcall, Thiscall ๋“ฑ)์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, EAX ๋˜๋Š” RAX๋Š” ๋ˆ„์‚ฐ๊ธฐ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์‚ฐ์ˆ ์ด๋‚˜ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ๋‹ค. x86-64 ํ™˜๊ฒฝ์—์„œ๋Š” 64๋น„ํŠธ ํ™•์žฅ๋œ RAX, 32๋น„ํŠธ EAX, 16๋น„ํŠธ AX ๊ทธ๋ฆฌ๊ณ  AX๋ฅผ ๋‹ค์‹œ ์ƒ์œ„ 8๋น„ํŠธ์ธ AH์™€ ํ•˜์œ„ 8๋น„ํŠธ์ธ AL๋กœ ์„ธ๋ถ„ํ™”ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด. EBX๋‚˜ RBX๋Š” ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ธฐ๋ณธ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ฐฐ์—ด์ด๋‚˜ ๋ฌธ์ž์—ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ๊ธฐ์ค€ ํฌ์ธํ„ฐ๋กœ ํ™œ์šฉ๋œ๋‹ค.

 

ECX ๋˜๋Š” RCX๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ๋ฃจํ”„ ์‹คํ–‰ ์‹œ ์นด์šดํ„ฐ ์—ญํ• ์„, EDX ๋˜๋Š” RDX๋Š” EAX์™€ ํ•จ๊ป˜ ํฐ ์ˆ˜์˜ ์—ฐ์‚ฐ์ด๋‚˜ ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

๋˜ํ•œ ์ธ๋ฑ์Šค ๋ ˆ์ง€์Šคํ„ฐ์—๋„ ์ค‘์š”ํ•œ๋ฐ, ESI ๋˜๋Š” RSI๋Š” ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋‚˜ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ ์‹œ ์†Œ์Šค ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ, EDI ๋˜๋Š” RDI๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์‚ฌ๋  ๋ชฉ์ ์ง€์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ณด์ž.

 

ESP๋‚˜ RSP๋Š” ์Šคํƒ ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ๋กœ, ํ˜„์žฌ ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜์—ฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ, ์ง€์—ญ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ ๋“ฑ์— ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. EBP ๋˜๋Š” RBP๋Š” ๋ฒ ์ด์Šค ํฌ์ธํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ์ธ์ž์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. EIP ๋˜๋Š” RIP๋Š” ๋ช…๋ น ํฌ์ธํ„ฐ๋กœ, ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด์•„ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

 

์„ธ๊ทธ๋จผํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋„ ์žˆ๋Š”๋ฐ, CS(์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ), DS(๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ), SS(์Šคํƒ ์„ธ๊ทธ๋จผํŠธ) ์™ธ์— ES, FS, GS ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋ฉด์„œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ”Œ๋ž˜๊ทธ ๋ ˆ์ง€์Šคํ„ฐ(RFLAGS ๋˜๋Š” EFLAGS)๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์ƒํƒœ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Zero Flag๋Š” ๊ฒฐ๊ณผ๊ฐ€ 0์ผ ๋•Œ, Sign Flag๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜์ผ ๋•Œ, Carry Flag๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์ค‘ ์˜ฌ๋ฆผ์ด๋‚˜ ๋‚ด๋ฆผ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, Overflow Flag๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์ง€์ •๋œ ๋น„ํŠธ ์ˆ˜๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์„ ๋•Œ ์„ค์ •๋œ๋‹ค. ์ด์™ธ์—๋„ Parity, Auxiliary Carry, Interrupt Enable/Disable, Direction Flag ๋“ฑ์ด ์žˆ๋‹ค.

๊ฐ๊ฐ์˜ ํ”Œ๋ž˜๊ทธ๋Š” ์กฐ๊ฑด๋ถ€ ๋ถ„๊ธฐ ๋ช…๋ น์–ด๋‚˜ ๋ณต์žกํ•œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ, ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋“ฑ์— ์‚ฌ์šฉ๋˜๋ฉด์„œ CPU๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํ๋ฆ„๋Œ€๋กœ ๋™์ž‘ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.

 

๋ณดํ†ต ๋†’์€ ์ˆ˜์ค€์˜ ์–ธ์–ด๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ์ ‘ํ•˜๋‹ค ๋ณด๋ฉด CPU ๋‚ด๋ถ€์˜ ๋ฏธ์„ธํ•œ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ์žŠ๊ธฐ ์‰ฌ์šด๋ฐ godbolt.org ๊ฐ™์€ ํˆด๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๋ ˆ์ง€์Šคํ„ฐ์™€ ํ”Œ๋ž˜๊ทธ๋“ค์ด ํ˜‘๋ ฅํ•˜์—ฌ "์‹ค์‹œ๊ฐ„"์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ƒ์ƒํ•˜๊ฒŒ ๋А๋‚„ ์ˆ˜ ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ดํ•ด๋Š” ์„œ๋ฒ„ ์ตœ์ ํ™”๋‚˜ ๋””๋ฒ„๊น… ์‹œ, ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ๋ฌธ์ œ๋กœ ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋“œ์›จ์–ด์™€ ๊นŠ์€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊นจ๋‹ซ๊ฒŒ ํ•ด์ค€๋‹ค.

 

์ด์ฒ˜๋Ÿผ x86-64 ์•„ํ‚คํ…์ฒ˜์˜ ๋ ˆ์ง€์Šคํ„ฐ ๊ตฌ์„ฑ์€ ๋‹จ์ˆœํ•œ ์ €์žฅ ๊ณต๊ฐ„์„ ๋„˜์–ด์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์•ž์œผ๋กœ๋„ ์ด๋Ÿฐ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ฉฐ ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ์‹œ์Šคํ…œ ์„ค๊ณ„์— ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

 

 

๊ณต๋ถ€ ์ข…๋ฃŒ ์‹œ๊ฐ„ - 23:17