์ƒˆ์†Œ์‹

Content/Book Review

[๋ฆฌ๋ฒ„์‹ฑ ์ž…๋ฌธ] ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ตฌ์กฐ

  • -
๋ฐ˜์‘ํ˜•

๋ฆฌ๋ฒ„์‹ฑ ์ž…๋ฌธ ์ด๋ผ๋Š” ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์ œ๊ฒŒ ๋„์›€์ด ๋˜์—ˆ๋˜ ์ •๋ณด๋“ค์„ ์กฐ๊ธˆ ๋”

์ด๊ฒƒ ์ €๊ฒƒ ์ฐธ๊ณ  ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

 

์ œ๊ฐ€ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ๋ณต์Šตํ•˜๊ณ  ์ฐพ์•„๋ณผ ๋ชฉ์ ์œผ๋กœ ์˜ฌ๋ฆฐ ๊ธ€์ž…๋‹ˆ๋‹ค

ํ˜น์‹œ ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์ง€์ ํ•ด์ฃผ์„ธ์š”!


 

[section 1 - ๋ฆฌ๋ฒ„์‹ฑ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ตฌ์กฐ]

 

 

์ปดํ“จํ„ฐ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ์š”์†Œ๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ, ํ•˜๋“œ๋””์Šคํฌ ์ด๋‹ค. 

ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด์„œ ๋ฐฐํฌํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ(exe)์€ ๊ธฐ๋ณธ์ ์œผ๋กœ HDD์— ์ €์žฅ๋œ๋‹ค.

 

 

https://bi.snu.ac.kr/~bhkim/lectures/digi_com_10f_snu/02.Architecture.pdf

 

 

CPU๋Š” ์ œ์–ด์žฅ์น˜, ์—ฐ์‚ฐ์žฅ์น˜, ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๋‚˜๋‰จ.

 

 

์•„๋ž˜๋Š” CPU๊ฐ€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  โ–ผ

 

https://cloudstudying.kr/lectures/183

 

 

๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฆ„

 

 

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

 

goodgid.github.io/Memory-Structure/ > ์ด ์ฃผ์†Œ์—์„œ ๋งค์šฐ ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 

 

 

ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘๊ณผ์ •

 

https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/

 

 

์œˆ๋„์šฐ์—์„œ๋Š” ์‹คํ–‰ํŒŒ์ผ์„ PEํŒŒ์ผ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

PEํŒŒ์ผ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ •๋ณด์™€ ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ์ €์žฅํ•ด์•ผ ํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฐ์น˜ ์ •๋ณด๊ฐ€

๋“ค์–ด์žˆ๋‹ค. PEํŒŒ์ผ์€ ํ—ค๋”, ๋ฐ”๋””๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ณ , ํ—ค๋”์— ์ด๋Ÿฐ ์ค‘์š” ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ, body์—๋Š” ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. PEํŒŒ์ผ์— ์ข…๋ฅ˜๋กœ๋Š” exe, dll, ocx๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ ๋จผ์ € exeํŒŒ์ผ์„ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

PEํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ ๋ ๋•Œ๋Š” ์ฝ”๋“œ ์˜์—ญ๊ณผ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ž๋ฃŒ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. 

์ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด์„œ ์Šคํƒ, ํž™ ์˜์—ญ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

 

 

C์–ธ์–ด๊ฐ€ mainํ•จ์ˆ˜๋กœ ์‹œ์ž‘ํ•˜๋“ฏ, PEํŒŒ์ผ์€ ์‹œ์ž‘์ ์„(์ฒ˜์Œ ์‹คํ–‰๋˜๋Š” ์œ„์น˜) Entry Point๋ผ๊ณ  ํ•œ๋‹ค.

 

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ž์‹ ์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋กœ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์„ ์ „๋ถ€ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์‹œ์— ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉด์„œ CPU๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

CPU์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์— ์ด ๊ถŒํ•œ์„ ๋„˜๊ฒจ ์ฃผ๋Š”๋ฐ, ์ด๋•Œ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ ๋ชจ๋“  ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ๋ณต์‚ฌํ•ด๋†“๋Š”๋‹ค. ์ด๊ฒƒ์„ Context Switching์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

Context Switching์ด ๋ฌด์—‡์ธ๊ฐ€?

๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ CPU๊ฐ€ ์–ด๋–ค ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ์š”์ฒญ์— ์˜ํ•ด ๋‹ค์Œ ์šฐ์„  ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•  ๋•Œ ๊ธฐ์กด์˜ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’(Context)์„ ์ €์žฅํ•˜๊ณ  CPU๊ฐ€ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’(Context)๋ฅผ ๊ต์ฒดํ•˜๋Š” ์ž‘์—…์„ Context Switch(Context Switching)๋ผ๊ณ  ํ•œ๋‹ค.


์ถœ์ฒ˜: https://jeong-pro.tistory.com/93

 

 

 

[section 2 - ๋ ˆ์ง€์Šคํ„ฐ]

 

 

lucete1230-cyberpolice.tistory.com/45

 

[์–ด์…ˆ๋ธ”๋ฆฌ์–ด] ๋ ˆ์ง€์Šคํ„ฐ

์˜ค๋Š˜์€ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”. ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ax,ah ๋“ฑ ๋งŽ์€ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์ด ๋“ฑ์žฅ์„ ํ•˜๋Š”๋ฐ, ์ €๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ๋•Œ๋ฌธ์— ๏ฟฝ๏ฟฝ

lucete1230-cyberpolice.tistory.com

Register๋Š” CPU์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์†์˜ ๊ธฐ์–ต์žฅ์น˜์ด๋‹ค.

CPU๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ CPU๋‚ด๋ถ€์— ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค.

์—ฐ์‚ฐ ์ค‘๊ฐ„์—๋„ ๋ ˆ์ง€์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

 


์•„๋ž˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ ์ข…๋ฅ˜์ธ๋ฐ, ๋ฆฌ๋ฒ„์‹ฑ ์ž…๋ฌธ ๊ต์žฌ์—์„œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ๋ฌด๋ฃŒ ๋ฐฐํฌ ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์ด๋ผ์„œ ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ธฐ๊ณ  ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

 

 

์œ„ ๋ธ”๋กœ๊ทธ ์ฃผ์†Œ์™€ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ฐ ์šฉ๋„๊ฐ€ ์žˆ์œผ๋ฉฐ, ์„œ๋กœ ๊ฐ™์€ ์šฉ๋„๋กœ ์“ฐ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

EBP, ESP๋Š” ๊พธ์ค€ํžˆ ๋ณด์ผ ๋ ˆ์ง€์Šคํ„ฐ๋“ค ์ธ๋ฐ์š”, ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ๋…€์„๋“ค์ž…๋‹ˆ๋‹ค.

 


 

[section 3 - ์Šคํƒ๊ณผ ์Šคํƒํ”„๋ ˆ์ž„]

 

์Šคํƒ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ๋ถ€๋ถ„์œผ๋กœ (LIFO) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํŠน๋ณ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค.

LIFO : ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ๋ฐฉ์‹

 

์Šคํƒ ํ”„๋ ˆ์ž„ : ์„œ๋ธŒ ๋ฃจํ‹ด(ํ•จ์ˆ˜)์ด ๊ฐ€์ง€๋Š” ์ž์‹ ๋งŒ์˜ ์Šคํƒ ์˜์—ญ์ด๋‹ค.

์Šคํƒ ํ”„๋ ˆ์ž„์—์„œ๋Š” ์„œ๋ธŒ ๋ฃจํ‹ด ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. 

ํ•จ์ˆ˜ ํ˜ธ์ถœ --> ์Šคํƒํ”„๋ ˆ์ž„ ์ƒ์„ฑ --> ํ•จ์ˆ˜ ์ข…๋ฃŒ --> ๋ณต๊ท€์ฃผ์†Œ๋กœ ๋Œ์•„๊ฐ --> ์Šคํƒํ”„๋ ˆ์ž„ ์†Œ๋ฉธ

 

์„œ๋ธŒ ๋ฃจํ‹ด์ด๋ž€?

ํ•จ์ˆ˜(function), ์„œ๋ธŒ๋ฃจํ‹ด(subroutine), ๋ฃจํ‹ด(routine), ๋ฉ”์„œ๋“œ(method), ํ”„๋กœ์‹œ์ €(procedure)๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์ • ์ฝ”๋“œ ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค.

ํ•จ์ˆ˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ํ•˜๋‚˜์˜ ํฐ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์—์„œ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

 


 

https://goodgid.github.io/Memory-Structure/

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ PEํŒŒ์ผ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

'Content > Book Review' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฆฌ๋ฒ„์‹ฑ ์ž…๋ฌธ] PE๋ž€?  (0) 2020.10.01
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.