CPU ๋ ์ง์คํฐ
์ฐ์ CPU๊ฐ ๋ฌด์จ ์ผ์ ํ๋์ง ์์๋ณด์.
๊ฐ๋จํ๊ฒ CPU(Central Processing Unit)๋ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์์(fetch) ์ด๋ค ๋ช ๋ น์ด์ธ์ง ํด์ํ๊ณ (decode) ์คํํ๋(execute) ๋์์ ํ๋ค. CPU์ ๋ํด์๋ ๋ฆฌ๋ฒ์ฑ ์์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ์ ๋ํด์๋ง ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
๋ ์ง์คํฐ๋ CPU ๋ด๋ถ์ ์กด์ฌํ๋ ์์ ๊ณ ์์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ ์ ์๋ค. ๋ ์ง์คํฐ์ ์ข ๋ฅ๋ก๋ ๋ฒ์ฉ ๋ ์ง์คํฐ, ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ, ์ํ ํ๋๊ทธ ๋ ์ง์คํฐ, ๋ช ๋ น ํฌ์ธํธ ๋ ์ง์คํฐ ๋ฑ์ด ์๋ค. ์ฌ๋ฆฌ๋๋ฒ๊ฑฐ์ ๋ํ๋๋ ๋ ์ง์คํฐ ์ ๋ณด๋ฅผ ์ดํด๋ณด์.
๋ฒ์ฉ ๋ ์ง์คํฐ
โก EAX(Extended Accumulator Register)
๊ณฑ์ ๊ณผ ๋๋์ ๋ช ๋ น์์ ์๋์ผ๋ก ์ฌ์ฉ๋๊ณ ํจ์์ ๋ฆฌํด ๊ฐ์ด ์ ์ฅ๋๋ ์ฉ๋๋ก๋ ์ฌ์ฉ๋๋ค.
โก EBX(Extended Base Register)
ESI๋ EDI์ ๊ฒฐํฉํ์ฌ ์ธ๋ฑ์ค์ ์ฌ์ฉ๋๋ค.
โก ECX(Extended Counter Register)
๋ฐ๋ณต ๋ช ๋ น์ด ์ฌ์ฉ์ ๋ฐ๋ณต ์นด์ดํฐ๋ก ์ฌ์ฉ๋๋ค. ECX ๋ ์ง์คํฐ์ ๋ฐ๋ณตํ ํ์๋ฅผ ์ง์ ํด ๋๊ณ ๋ฐ๋ณต ์์ ์ ์ํํ๊ฒ ๋๋ค.
โก EDX(Extended Data Register)
EAX์ ๊ฐ์ด ์ฐ์ด๋ฉฐ ๋ถํธ ํ์ฅ ๋ช ๋ น ๋ฑ์ ์ฐ์ธ๋ค.
โก ESI(Extended Source Index)
๋ฐ์ดํฐ ๋ณต์ฌ๋ ์กฐ์ ์ Source Data์ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. ESI ๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๋ฐ์ดํฐ๋ฅผ EDI ๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ก ๋ณต์ฌํ๋ ์ฉ๋๋ก ๋ง์ด ์ฌ์ฉ๋๋ค.
โก EDI(Extended Destination Index)
๋ณต์ฌ ์์ ์ Destination์ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. ์ฃผ๋ก ESI ๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋๋ค.
โก ESP(Extended Stack Pointer)
ํ๋์ ์คํ ํ๋ ์์ ๋ ์ง์ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. PUSH, POP ๋ช ๋ น์ด์ ๋ฐ๋ผ์ ESP์ ๊ฐ์ด 4Byte์ฉ ๋ณํ๋ค,
โก EBP(Extended Base Pointer)
ํ๋์ ์คํ ํ๋ ์์ ์์ ์ง์ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. ํ์ฌ ์ฌ์ฉ๋๋ ์คํ ํ๋ ์์ด ์๋ฉธ๋์ง ์๋ ๋์ EBP์ ๊ฐ์ ๋ณํ์ง ์๋๋ค, ํ์ฌ ์คํ ํ๋ ์์ด ์๋ฉธ๋๋ฉด ์ด์ ์ ์ฌ์ฉ๋๋ ์คํ ํ๋ ์์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
๋ช ๋ น ํฌ์ธํฐ
โก EIP(Extended Instruction Pointer)
๋ค์์ ์คํํด์ผ ํ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. ํ์ฌ ๋ช ๋ น์ด๋ฅผ ์คํ ์๋ฃํ ํ์ EIP ๋ ์ง์คํฐ์ ์ ์ฅ๋์ด ์๋ ์ฃผ์์ ์์นํ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ฒ ๋๋ค. ์คํ ์ EIP ๋ ์ง์คํฐ์๋ ๋ค์ ์คํํด์ผ ํ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ๋ ์ฃผ์์ ๊ฐ์ด ์ ์ฅ๋๋ค.
์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ
โก CS(Code Segment)
์คํ ๊ฐ๋ฅํ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ๋ ์ธ๊ทธ๋จผํธ์ ์คํ์ ์ด ์ ์ฅ๋๋ค.
โก DS(Data Segment)
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ ์ธ๊ทธ๋จผํธ์ ์คํ์ ์ด ์ ์ฅ๋๋ค.
โก SS(Stack Segment)
์คํ์ด ์กด์ฌํ๋ ์ธ๊ทธ๋จผํธ์ ์คํ์ ์ด ์ ์ฅ๋๋ค.
ํ๋๊ทธ ๋ ์ง์คํฐ
โก CF(Carry Flag)
๋ถํธ ์๋ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์ฉ๋๋ณด๋ค ํด ๋ ์ธํธ(1)๋๋ค.
โก ZF(Zero Flag)
์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ 0์ผ ๋ ์ธํธ(1)๋๋ค. ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ 0์ด ์๋ ๋ ํด์ (0)๋๋ค.
โก OF(Overflow Flag)
๋ถํธ ์๋ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์ฉ๋๋ณด๋ค ํด ๋ ์ธํธ(1)๋๋ค.
โก SF(Sign Flag)
์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์์๊ฐ ๋์์ ๋ ์ธํธ(1)๋๋ค. ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์์๊ฐ ๋์์ ๋ ํด์ (0)๋๋ค.
โก DF(Direction Flag)
๋ฌธ์์ด ์ฒ๋ฆฌ์์ ์ฐ์๋๋ ๋ฌธ์์ด์ ์ฒ๋ฆฌ ๋ฐฉํฅ์ ๋ฐ๋ผ ์ธํธ(1)๋๋ค.
๋ถ๋ ์์์ ๋ ์ง์คํฐ
โก ST(0), ST(1), ST(2), ST(3), ST(4), ST(5), ST(6), ST(7)
๋ฒ์ฉ ๋ ์ง์คํฐ๋ ๋ ์ง์คํฐ ์ด๋ฆ ์ฒซ ๊ธ์๊ฐ โEโ์ธ ๊ฒ์ ์ ์ ์๋ค. โํ์ฅ๋์๋ค(Extended)โ ๋ผ๋ ์๋ฏธ๋ก 32bit ์ปดํจํฐ ํ๊ฒฝ์ด ๋๋ฉด์ 16bit ๋ ์ง์คํฐ์ธ AX, BX, CX, DX ๋ฑ์ ๋ ์ง์คํฐ๋ฅผ 32bit๋ก ํ์ฅํ ๊ฒ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. EAX, EBX, ECX, EDX ๋ ์ง์คํฐ๋ 32bit, 16bit, 8bit๋ก ์ฌ์ฉํ ์ ์๋ค. EAX ๋ ์ง์คํฐ๋ฅผ ์๋ก ๋ค๋ฉด 32bit๋ EAX, 16bit๋ AX, 8bit๋ AH, AL๋ก ์ฌ์ฉํ ์ ์๋ค.
32๋นํธ 16๋นํธ ์์ 8๋นํธ ํ์ 8๋นํธ
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL
c
์์ 8๋นํธ๋ High๋ผ์ โHโ๊ฐ ๋ถ๊ณ , ํ์ 8๋นํธ๋ Low๋ผ์ โLโ์ด ๋ถ๋๋ค๊ณ ์๊ฐํ๋ฉด ์ธ์ฐ๊ธฐ ์ฝ๋ค.
ESI, EDI, EBP, ESP ๋ ์ง์คํฐ๋ 32bit, 16bit๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
32๋นํธ 16๋นํธ
ESI SI
EDI DI
EBP BP
ESP SP
[์ถ์ฒ] ๋ ์ง์คํฐ๋?|์์ฑ์ Zealous
'Security Study > Reversing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Mobile Application Reverse Engineering: MARA (0) | 2016.12.16 |
---|---|
๋ฒ์ฉ ๋ ์ง์คํฐ(General Register) (0) | 2015.09.08 |
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ด๋? (0) | 2015.09.03 |
์ด์ ๋ธ๋ฆฌ์ธ์ด๋? (0) | 2015.09.03 |
๋๊ธ