Security Study/Reversing

๋ ˆ์ง€์Šคํ„ฐ๋ž€?

๐“›๐“พ๐“ฌ๐“ฎ๐“ฝ๐“ฎ_๐“ข๐“ฝ๐“ฎ๐“ต๐“ต๐“ช 2015. 9. 3.
728x90
๋ฐ˜์‘ํ˜•

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




์ƒ์œ„ 8๋น„ํŠธ๋Š” High๋ผ์„œ โ€˜Hโ€™๊ฐ€ ๋ถ™๊ณ , ํ•˜์œ„ 8๋น„ํŠธ๋Š” Low๋ผ์„œ โ€˜Lโ€™์ด ๋ถ™๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์™ธ์šฐ๊ธฐ ์‰ฝ๋‹ค.


ESI, EDI, EBP, ESP ๋ ˆ์ง€์Šคํ„ฐ๋Š” 32bit, 16bit๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


32๋น„ํŠธ 16๋น„ํŠธ

ESI SI

EDI DI

EBP BP

ESP SP

 

[์ถœ์ฒ˜] ๋ ˆ์ง€์Šคํ„ฐ๋ž€?|์ž‘์„ฑ์ž Zealous

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€